Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:在Android中,选择ViewwGroup然后选择ListView是否更好?_Android_Listview - Fatal编程技术网

Android:在Android中,选择ViewwGroup然后选择ListView是否更好?

Android:在Android中,选择ViewwGroup然后选择ListView是否更好?,android,listview,Android,Listview,我需要一个项目列表,其中每个项目都包含 文本视图 进度条 下载按钮 取消按钮 当我点击下载按钮时,progressBar启动并运行良好。我已将每个行视图绑定到数据对象。下载任务中,即;asynctask我正在使用此视图进行更新。但是当我滚动列表时,进度在不同的行和实际的行是可见的。我不知道原因是什么 因此,我决定避免使用listview,而是创建Viewgroup,然后将所有视图线性添加到这些视图中。(但我不知道如何处理下载、按钮和取消按钮)这是好方法还是其他可能的方法?表演角色?谁能帮我解决这

我需要一个项目列表,其中每个项目都包含

  • 文本视图
  • 进度条
  • 下载按钮
  • 取消按钮
  • 当我点击下载按钮时,progressBar启动并运行良好。我已将每个行视图绑定到数据对象。下载任务中,即;asynctask我正在使用此视图进行更新。但是当我滚动列表时,进度在不同的行和实际的行是可见的。我不知道原因是什么

    因此,我决定避免使用listview,而是创建Viewgroup,然后将所有视图线性添加到这些视图中。(但我不知道如何处理下载、按钮和取消按钮)这是好方法还是其他可能的方法?表演角色?谁能帮我解决这些问题吗

    谢谢你


    Srinivas

    Android正在大量重用构成ListView每个窗口的视图。当您滚动这些视图时,它们会被一次又一次地重复使用,因此您需要注意在项目变得隐藏/可见时为其重新分配正确的进度状态

    我建议不要创建一个或两个以上的AsyncTask,因为您肯定会用太多的线程阻塞系统

    你的名单有多长

    如果<10项(四舍五入,需要检查)。我会从ListView切换到

    • 滚动视图
      • 线性布局
        • 项目1
        • 项目2
        • 项目3
    您的每个项目都包含项目等,并且仍然可以滚动

    然后,我将为每个项目附加一个标记,并在
    onClick
    处理程序中使用该标记:

    public void handleClick(View v) {
        // use v.getTag();
    }
    
    您可以通过android:Tag=“1234”或在代码中在XML中定义标记


    如果您知道ViewParent是什么(哪个类),那么还可以将其强制转换到相应的类,并从中获取“标记”

    因此,进度条在不同的行中可见的原因是因为操作系统有一个视图池,它正在重用该视图池来绘制列表的可见部分。下面是一个关于如何使用ViewHolder处理此类问题的好例子我的列表是动态的。当我单击时,前7项包含一个按钮中的每个按钮。列表会随着其他行的集合而增长。考虑到您程序的动态特性,我仍然同意我的想法。由于Listview一直在循环使用视图,因此始终恢复每个项目的状态将非常繁琐。如果你的时间没有那么长,你可能也不会有很大的性能问题。