android - 每次在 getView 中 View 都会膨胀。 findViewById(...) 已执行多次。我用过View Holder

标签 android android-view

public View getView(final int pos, View arg1, ViewGroup arg2) {

    ViewHolder holder;
    View view = arg1;

    if (arg1 == null) {
        holder = new ViewHolder();
        System.out.println("Inflating view");
        arg1 = mInflater.inflate(R.layout.inflatefreedownlod, arg2, false);
        holder.im = (ImageView) arg1.findViewById(R.id.imf1);
        holder.tv1 = (TextView) arg1.findViewById(R.id.tvf1);
        holder.tv2 = (TextView) arg1.findViewById(R.id.mini1);
        holder.tv3 = (TextView) arg1.findViewById(R.id.m1);
        arg1.setTag(holder);

    } else {

        holder = (ViewHolder) arg1.getTag();
    }

    holder.tv1.setText(NAME.get(pos).toString());
    holder.tv2.setText(contentName.get(pos).toString());
    holder.tv3.setText(minidescp.get(pos).toString());
    URL url1;

    try {

        url1 = new URL(imurl.get(pos).toString());
        bmp = BitmapFactory.decodeStream(url1.openConnection().getInputStream());
        holder.im.setImageBitmap(bmp);
        //bmp.recycle();

    } catch (Exception e) {
        e.printStackTrace();
    }

    arg1.setOnClickListener(new OnClickListener() {

                            @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            for (int i = 0; i < NAME.size(); i++)
                if (pos == i) {
                    getFreeContent(Cid.get(pos).toString(), Vid.get(pos).toString(), contentName.get(pos).toString());
                }

        }

    });

    return arg1;
}

我看到 logcat 显示 Inflating View 3 次。当我在模拟器上测试它时,我在 ListView 中显示了 3 个 LinearLayout 。为什么我的 View 每次都是空的? View 也每次都会膨胀。我的代码有什么问题

最佳答案

如果列表中有三个项目,并且 ListView 中屏幕上有可容纳三行的空间,则 getView() 将被调用三次,并带有null View 创建这三行。您无法回收当前正在使用的行。

关于android - 每次在 getView 中 View 都会膨胀。 findViewById(...) 已执行多次。我用过View Holder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11648995/

相关文章:

android - 局部变量或实例字段名称与正则表达式不匹配 '[a-z]+'

android - 在android中重新启动前台服务

Android ADT 23 更新 - 由于依赖项冲突,无法完成安装

java - 删除 Android 上的所有照片

android - 列表占用太多空间,无法查看带有按钮的 EditText

Android galaxy 选项卡选项菜单不同?

android - 通过淡入和放大动画 View 可见性

java - "ViewGroup"父控件,如果空间不足,则自动将控件移动到下一行

android - 如何在 Android 的单个 View 上 float 多个 View

android - 检查 View 是否属于线性布局