我如何选择convertview重用?

Mic*_*cki 1 android listview adapter android-adapter

上下文
我希望有一个列表,列表项有3个明显不同的布局,所以我根据要显示的项类型创建适配器创建适当的视图.
例如,我想列出一些图像,文本和数字,每个都有一些标题.我知道,
public View getView(int position, View convertView, ViewGroup parent)
convertView看台上重用不再可见listItems中的观点.

问题
如何选择convertView或如何控制我在那里得到的东西?

问题来自不同的listItems视图,假设我的列表以图像listItem开头,然后是很多文本listItems和number listItems和100 listItems后来出现第二个图像.我假设在向下滚动列表时,(在getView(...)调用中)第一个convertView不为null的是带图像的那个,因为我需要一个视图来显示文本listItem或数字listItem我不能使用它.然后我想在每次下一次getView(...)调用时convertView都是与之前调用相同的图像listItem,因为我之前没有使用它.

未使用的文本listItems和number listItems卡住了,当滚动列表时我需要继续创建新视图,这是我想要防止的.

Mur*_*san 5

试试这个,

@Override
public View getView(final int position, View convertview, ViewGroup parent) {
    // TODO Auto-generated method stub
    final ViewHolder mHolder;
    if (convertview == null) {
        convertview = mInflater.inflate(R.layout.list_item, null);
        mHolder = new ViewHolder();
        mHolder.username_Txt = (TextView) convertview
                .findViewById(R.id.username_Txt);

        convertview.setTag(mHolder);
    } else {
        mHolder = (ViewHolder) convertview.getTag();
    }

    try {
        mHolder.username_Txt.setText("your value");


    } catch (Exception e) {
        // TODO: handle exception
    }

    return convertview;
}
private class ViewHolder {

    private TextView username_Txt;

}
Run Code Online (Sandbox Code Playgroud)