馬上加入Android 台灣中文網,立即免費下載應用遊戲。
您需要 登錄 才可以下載或查看,沒有帳號?註冊
x
不好意思打擾一下,
我現在在嘗試使用繼承BaseAdapter的方法實作ListView,
照著書上的方法做,
但就是沒有出現ListView的內容,
但是Log有跑到getView()的地方,
看了好幾次看起來設定跟書上都一樣,
網路上看到的方法也都跟書上一樣,
不知道是有改版還是什麼原因,
我把我的程式碼PO出來,
麻煩大大播空幫忙看一下,
謝謝~ activity_main.xml <?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" android:background="#000000"> <LinearLayout android:id="@+id/layout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/tv" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="#b3000d" android:gravity="center_vertical|center_horizontal" android:textSize="26dp" android:background="#aab0ff" android:textStyle="bold" android:layout_marginBottom="5dp" android:text="List" /> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#570000"> <TextView android:id="@+id/tv2" android:layout_width="200dp" android:layout_height="wrap_content" android:textColor="#FFFFFF" android:gravity="center_vertical|left" android:textSize="16dp" android:textStyle="bold" android:typeface="serif" android:text="TextView" /> </RelativeLayout> <ListView android:id="@+id/lv_country" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FFFFFF" android:cacheColorHint="#00000000"/> </LinearLayout></android.support.constraint.ConstraintLayout>MainActivity.java package com.example.user.test;import android.app.Activity;import android.app.ListActivity;import android.app.PendingIntent;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.view.View.OnTouchListener;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ArrayAdapter;import android.widget.ListAdapter;import android.widget.ListView;import android.widget.Toast;import java.util.ArrayList;public class MainActivity extends Activity { ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //取得控制項物件 initViews(); //初始化資料 initDatas(); //設定監聽事件 setListensers(); } private void initViews() { listView = (ListView)findViewById(R.id.lv_country); } private void initDatas() { listView.setAdapter(new EfficientAdapter(this)); } private void setListensers() { listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(getApplicationContext(), "你點選的項目為: " + Integer.toString(position), Toast.LENGTH_LONG).show(); } }); }}row.xml <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <ImageView android:id="@+id/myImageView" android:layout_width="wrap_content" android:layout_height="wrap_content" app:srcCompat="@drawable/ic_launcher" /> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/myTextView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#000000" android:textSize="16dp" android:text="大標題" /> <TextView android:id="@+id/myTextView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#000000" android:textSize="12dp" android:text="小標題" /> </LinearLayout></LinearLayout>EfficientAdapter.java package com.example.user.test;import android.content.Context;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;public class EfficientAdapter extends BaseAdapter { private String TAG = "自訂Adapter"; public static String[] fruit = {"Apple", "Banana", "Orange", "Watermelon"}; public static String[] fruit_nickname = {"AP", "BA", "OR", "WA"}; private LayoutInflater mInflater; public EfficientAdapter(Context context) { mInflater = LayoutInflater.from(context); } @Override public int getCount(){ Log.w(TAG, "取得數量: " + fruit.length); return fruit.length; } @Override public Object getItem(int position){ Log.w(TAG, "取得Item: " + fruit.length); return position; } @Override public long getItemId(int position){ Log.w(TAG, "取得ItemId: " + fruit.length); return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if(convertView == null) { convertView = mInflater.inflate(R.layout.row, null); holder = new ViewHolder(); holder.text1 = (TextView)convertView.findViewById(R.id.myTextView1); holder.text2 = (TextView)convertView.findViewById(R.id.myTextView2); convertView.setTag(holder); } else { holder = (ViewHolder)convertView.getTag(); } holder.text1.setText(fruit[position]); holder.text2.setText(fruit_nickname[position]); convertView.setTag(holder); Log.w(TAG, "寫入資料: " + position + ", " + fruit[position] + ", " + fruit_nickname[position]); return convertView; } static class ViewHolder { public TextView text1; public TextView text2; }}
|