【问题标题】:Android listview getting all itemsAndroid listview获取所有项目
【发布时间】:2015-07-07 03:22:52
【问题描述】:

在 android 中,是否可以获取列表视图中的所有项目。假设列表视图有多行,屏幕上只有 2 行可见,而其余行可使用滚动条访问。每行都有一个单选按钮和一个文本视图。有没有办法获取选中单选按钮的行的所有文本视图,而不仅仅是屏幕上可见的那些。

【问题讨论】:

  • 您绝对可以在您的适配器实现中做到这一点。你能告诉我们你的 ListView 和 Adapter 代码吗?
  • 嘿,它不允许我发布超过最大行数的所有内容。 cna 你给我一个例子,说明我如何在适配器实现中做到这一点?谢谢
  • 尝试在 pastebin.com 中发布您的并在此处上传链接,以便我们可以看到您的实施。

标签: android listview android-studio


【解决方案1】:

你的答案可能是:

for(int item = 0; item < m_listitem.count(); item ++){
            if(m_listitem[item].isSelected){
                View view = ListView.getChildAt(i);
                TextView textview = view.findViewById(your textView id);
                // do some thing
            }
        }

【讨论】:

  • 如果该行不可见,view.findviewbyid... 会为 null 吗?
  • 这里是链接pastebin.com/iRvhUEud,我关心的部分从tellOthers.setOnClickListener(new View.OnClickListener() {
  • @MushahidNawazKhan 不,如果视图为 null 或 id 不在视图中,则为 null。
  • 但是不可见的行应该是空的吧?在那种情况下,当我选择单选按钮并单击提交时,第二个之后的行将为空,对吗?
  • 不,它不为空。你可以在这里阅读文档developer.android.com/reference/android/view/…
【解决方案2】:

您可以使用自定义列表视图来显示带有复选框和文本视图的列表项。

【讨论】:

    【解决方案3】:

    我碰巧有一个类似的要求,我在一个ListView 中有多个EditText,但其中只有几个在屏幕上可见。我需要获取所有 EditText 的值,而不仅仅是屏幕上可见的值。

    如果您使用的是默认适配器,那么它的工作方式就是回收旧视图来创建新视图。所以没有办法保留那些不可见的视图的值。 所以唯一的解决方法是创建自己的适配器,可能类似于以下内容,它不会回收任何视图,但每次都会膨胀新的。

    public class ListViewAdapter extends ArrayAdapter {
    
        public ListViewAdapter(Context context, ArrayList<Object> items) {
            super(context, 0, items);
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            return LayoutInflater.from(getContext()).inflate(R.layout.your_layout_for_list_view_item, parent, false);
        }
    }
    

    之后,正如上面的答案Lãng Tử Bị Điên 提到的,您可以检查您的java 代码,如果您的单选按钮被选中,并据此选择所需的TextViews

    for(int item = 0; item < m_listitem.count(); item ++){
            if(m_listitem[item].isSelected){
                View view = ListView.getChildAt(i);
                TextView textview = view.findViewById(your textView id);
                // do some thing
            }
        }
    

    希望这应该可以做到。在我的情况下它确实有效!

    【讨论】:

      猜你喜欢
      • 2011-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-22
      • 1970-01-01
      相关资源
      最近更新 更多