【问题标题】:How to manage list views Checkboxes Automatically checking?如何管理列表视图复选框自动检查?
【发布时间】:2012-05-01 07:16:38
【问题描述】:

这是我想要的列表我的问题是当我滚动列表视图时复选框(这是此列表的项目)会自动选中 ex - 如果我先检查,然后自动检查 4。

我的第一个目标:

 1. want to stretch my list to full i will wrap it into Scrollview  how
 2. i can prevent it to automatically checked

.

<ListView   
android:id="@+id/ListViewProducts"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_column="0"
android:layout_span="2"
android:clickable="true"
android:isScrollContainer="true"
android:saveEnabled="true"
android:scrollbarAlwaysDrawVerticalTrack="true"
android:scrollbarSize="10sp"
android:scrollbars="vertical" >
</ListView>

【问题讨论】:

    标签: android checkbox android-listview scrollview


    【解决方案1】:

    创建您自己的 BaseAdapter。

    请记住,您在列表视图中看到的所有视图都是临时的。当您滚动离开时,它们将被回收。原因是 - 您的列表中可以有 >9000 个元素。因此,您创建视图的方式必须依赖于某种 ​​(!) 数据。

    Here 是一本关于如何创建自己的列表的教程。

    使第 X 个复选框依赖于列表中的第 X 个布尔值。我第一次知道有点混乱,但这是最好的方法。

    class MyAdapter extends BaseAdapter{
    
        List<boolean> myCheckBoxes;
    
        boolean getItem(int arg0){
    
            return myCheckBoxes.get(arg0);
    
        }
    
        View getView(int arg0, View arg1, ViewGroup arg2){
    
            ...
            ...//See article
            myView.setChecked(getItem(arg0));
    
            ...
            return myView;
    
        }
    

    在你的活动中

    ListView myListView;
    ...
    myListView.setAdapter(new MyAdapger(...));
    

    【讨论】:

    • 是的,但我的问题从这里开始现在我想获取我正在使用的复选框的状态 ListView.getAdapter().getView(int Position,null,null);找到视图,但它没有给我正确的视图及其状态
    • @Photon 他们不会给你正确的视图,因为列表视图的视图是临时的。要保存有关列表视图项的信息,您需要分配一个侦听器并将其数据保存到另一个数据源(例如数组)
    • 使您的视图“等同于”某些数据收集。并从中获取信息。例如。 isSelected(int position){return myCheckboxes.get(position);}
    【解决方案2】:
    1. 您不能将列表视图放入滚动视图中,两个向同一方向滚动的视图将无法正常工作。只需将列表视图放在非滚动布局中(frame-、list-、relativelayout)。
    2. 使用适配器根据要显示的数据设置每个列表视图的行视图。

    【讨论】:

      【解决方案3】:
      1. ListView 已经扩展了 ScrollView,不需要另外一个来包围它。

      2. 试试看这个post on creating custom listView items。您可以在其中实现一个复选框,并使其具有android:checked="false"

      【讨论】:

        【解决方案4】:

        ListVew 已经扩展了 ScrollView 不需要在 ListView 上实现它

        对于自动检查,请点击此链接:

        Check box checked Automatically in listview when scrolling the list.

        【讨论】:

          【解决方案5】:

          没有必要在列表视图中实现滚动视图,因为它已经扩展到滚动视图。 我认为您的列表视图无法正确处理项目的回收。因此,要解决此问题,请通过以下链接。

          Getting an issue while checking the dynamically generated checkbox through list view

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-02-16
            • 1970-01-01
            • 2011-04-11
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多