建議:
public class MyAdapter extends BaseAdapter{
private List<ItemBean> mList;//數據源
private LayoutInflater mInflater;//布局裝載器對象
// 通過構造方法將數據源與數據適配器關聯起來
// context:要使用當前的Adapter的界面對象
public MyAdapter(Context context, List<ItemBean> list) {
mList = list;
mInflater = LayoutInflater.from(context);
}
@Override
//ListView需要顯示的數據數量
public int getCount() {
return mList.size();
}
@Override
//指定的索引對應的數據項
public Object getItem(int position) {
return mList.get(position);
}
@Override
//指定的索引對應的數據項ID
public long getItemId(int position) {
return position;
}
@Override
//返回每一項的顯示內容
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
//如果view未被實例化過,緩存池中沒有對應的緩存
if (convertView == null) {
viewHolder = new ViewHolder();
// 由于我們只需要將XML轉化為View,并不涉及到具體的布局,所以第二個參數通常設置為null
convertView = mInflater.inflate(R.layout.item, null);
//對viewHolder的屬性進行賦值
viewHolder.imageView = (ImageView) convertView.findViewById(R.id.iv_image);
viewHolder.title = (TextView) convertView.findViewById(R.id.tv_title);
viewHolder.content = (TextView) convertView.findViewById(R.id.tv_content);
//通過setTag將convertView與viewHolder關聯
convertView.setTag(viewHolder);
}else{//如果緩存池中有對應的view緩存,則直接通過getTag取出viewHolder
viewHolder = (ViewHolder) convertView.getTag();
}
// 取出bean對象
ItemBean bean = mList.get(position);
// 設置控件的數據
viewHolder.imageView.setImageResource(bean.itemImageResId);
viewHolder.title.setText(bean.itemTitle);
viewHolder.content.setText(bean.itemContent);
return convertView;
}
// ViewHolder用于緩存控件,三個屬性分別對應item布局文件的三個控件
class ViewHolder{
public ImageView imageView;
public TextView title;
public TextView content;
}
MyAdapter1 myAdapter=new MyAdapter1(getContext(),list);
listView.setAdapter(myAdapter);
//設置listview點擊事件
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(getActivity(),""+i,Toast.LENGTH_LONG).show();
}
});
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener(){
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
// When clicked, show a toast with the TextView text
Toast.makeText(getActivity(), "2131"+arg2+"--"+arg3, Toast.LENGTH_SHORT).show();
return false;
}
});
不建議:
import android.content.Context;
import android.database.DataSetObserver;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.SpinnerAdapter;
import android.widget.TextView;
import com.exam_assistant.R;
public class MyAdapter extends BaseAdapter {
private Context mContext;
private String data[];
public MyAdapter(Context mContext, String[] data) {
this.mContext = mContext;
this.data = data;
}
public MyAdapter(Context mContext) {
this.mContext = mContext;
}
@Override
public int getCount() {
return data.length;
}
@Override
public Object getItem(int position) {
return data[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
if (convertView == null) {
view = LayoutInflater.from(mContext).inflate(R.layout.layout_ltem_practice, parent, false);
TextView textView = view.findViewById(R.id.ltem);
textView.setText(data[position]);
Log.d("456", "新建的item: " + position);
} else {
view = convertView;
Log.d("123", "回收的item" + position);
}
return view;
}
}