android - 我如何选择要重用的 convertview?

标签 android listview adapter android-adapter

上下文
我想要一个包含 3 种截然不同的列表项布局的列表,因此我使我的适配器根据要显示的项目类型创建适当的 View 。
例如我想列出一些图像、文本和数字,每个都有一些标题。 我知道在
public View getView(int position, View convertView, ViewGroup parent)
convertView 代表重用不再可见的 listItems View 。

问题
我如何选择 convertView 或者我如何控制我在那里得到的内容?

问题来自不同的 listItems View ,假设我的列表以图像 listItem 开头,然后是大量文本 listItems 和数字 listItems,100 个 listItems 随后是第二张图像。 我假设在向下滚动列表时,(在 getView(...) 调用中)第一个不为 null 的 convertView 是带有图像的,因为我需要显示文本 listItem 或数字 listItem 的 View 我无法使用它。然后我猜想在接下来的每个 getView(...) 调用中,convertView 都是与之前调用相同的图像 listItem,因为我之前没有使用它。

未使用的文本 listItems 和数字 listItems 卡住了,滚动列表时我需要继续创建新 View ,这是我想要防止的。

最佳答案

试试这个,

@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;

}

关于android - 我如何选择要重用的 convertview?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27099455/

相关文章:

C# 和设计模式 - 需要一个优雅的解决方案来解决常见问题

android - 增加选项卡布局中选项卡的宽度

java - 在android中通过java代码重新排列RelativeLayout子级

android - 如何在 SQLite 数据库中存储 JSON 对象

html - Android:如何在 ListView 中添加 HTML 链接?

java - 检查 EditText 值到 ListView android

android - 如何使用接口(interface)android在适配器中创建onclick事件?

android - 关闭 SpeechClient 时出现 java.util.concurrent.RejectedExecutionException

java - 如何针对不同环境设置java

javascript - 如何在 QML 中动态添加项目到 VisualItemModel?