我正在调用CustomAdapter
类,它扩展BaseAdapter
类并从其他类调用但是getView
类的CustomAdapter
方法将被调用?我无法理解......请帮帮我..
public class CustomAdapter extends BaseAdapter {
Context mContext;
public String[] sText = { "this", "that", "yellow" };
public String bText = "hello";
public Integer[] images = { R.drawable.s_1, R.drawable.s_2, R.drawable.s_3, };
public CustomAdapter(Context context) {
super();
this.mContext = context;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return sText.length;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return sText.length;
}
@SuppressLint("NewApi")
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
LayoutInflater inflater = ((Activity) mContext).getLayoutInflater();
View customRow = inflater.inflate(R.layout.lview, null);
ImageView image = (ImageView) customRow.findViewById(R.id.imageView1);
TextView smalltext = (TextView) customRow.findViewById(R.id.textView1);
TextView bigtext = (TextView) customRow.findViewById(R.id.textView2);
image.setImageResource(images[position]);
image.setAdjustViewBounds(true);
image.setMaxHeight(50);
smalltext.setText(sText[position]);
bigtext.setText(bText);
return customRow;
}
}
答案 0 :(得分:1)
how getView method of CustomAdapter class will be invoked?
这是一个简单的问题,答案很复杂。您实际上并没有直接调用此方法,但Android ListView(或AdapterView
的任何实现)将为您调用此方法。当列表项视图准备好显示或即将显示时,将调用此方法。也许正确的答案是指向ListView
,AbsListView
和AdapterView
源代码,但我确信您没有足够的时间来审核和理解该代码。
所以我给你的答案是从着名的GoogleIO演示文稿The world of ListView开始。这解释了ListView如何工作,如何回收其视图,最佳实践和反模式。
在您观看该演示文稿后,您会看到getView
必须尽快结束,否则ListView
将会出现问题,用户体验将会很低。因此,您可以实现ViewHolder
模式并重用getView
中的第二个参数。