如何调用baseadapter类的getview方法

时间:2013-11-18 06:30:29

标签: java android

我正在调用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;
    }

}

1 个答案:

答案 0 :(得分:1)

how getView method of CustomAdapter class will be invoked?

这是一个简单的问题,答案很复杂。您实际上并没有直接调用此方法,但Android ListView(或AdapterView的任何实现)将为您调用此方法。当列表项视图准备好显示或即将显示时,将调用此方法。也许正确的答案是指向ListViewAbsListViewAdapterView源代码,但我确信您没有足够的时间来审核和理解该代码。

所以我给你的答案是从着名的GoogleIO演示文稿The world of ListView开始。这解释了ListView如何工作,如何回收其视图,最佳实践和反模式。

在您观看该演示文稿后,您会看到getView必须尽快结束,否则ListView将会出现问题,用户体验将会很低。因此,您可以实现ViewHolder模式并重用getView中的第二个参数。