【问题标题】:accessing an item in listview访问列表视图中的项目
【发布时间】:2011-11-08 07:18:54
【问题描述】:

我有一个显示列表视图的玩家列表。 listview 的每一行都包含 button、textview 和 imageview。如何获取 textview 的值?

【问题讨论】:

    标签: android listview textview


    【解决方案1】:

    如果您使用自定义适配器类来填充列表视图,那么在您的适配器中,您可以使用 HashMap 保存键值对,将列表项的位置与数据一起保存到该文本视图中。然后您可以轻松检索它列表视图的 OnItemClickListener。

    【讨论】:

      【解决方案2】:

      根据您实施的具体情况,我会采用以下方法之一。

      选项 A。 使用setOnItemClickListener 向列表注册一个点击监听器(或者,如果您使用 ListActivity 或 ListFragment,只需使用 [onListItemClick](http://developer.android.com/reference/android/app/ListActivity.html #onListItemClick%28android.widget.ListView, android.view.View, int, long%29))。 onItemClick 在被点击的视图中传递,可用于检索嵌套视图,例如您正在寻找的 TextView。

      list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
          @Override
          public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
              TextView tv = (TextView) view.findViewById(R.id.textview);
              String tvText = tv.getText();
          }
      }
      

      选项 B 假设您从某种数据集合中填充您的列表,您可能可以执行与上述类似的操作,但使用传递的position 参数作为索引,直接从集合中的对象中获取文本;即:

      list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
          @Override
          public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
              SomeObject so = myCollection.get(position);
              String tvText = so.getTextViewText();
          }
      }
      

      不过还有很多选择。我有点喜欢创建自己的 ArrayAdapter 扩展来保存列表中项目视图的模型。这样您也可以调用getItemAtPosition(int position)getItem(int position) 并将返回的对象转换为您的数据类型。

      【讨论】:

        【解决方案3】:

        它是静态列表还是动态生成的列表?
        如果它是静态的,您可以为 xml 本身中的每个 textview 分配不同的 id,然后使用 FindViewById 访问它。
        如果不是,这就是您必须做的:您显然会有一行并显示多次。所以多个文本视图将具有相同的 ID。
        使用 for 循环,在其中使用 FindViewById(记住 FindViewByID 将仅访问具有提到的 Id 的第一个元素,将其 Id 设置为其他内容,在下一次迭代中选择下一个 textview,将其 Id 设置为某事)然后使用这些新的 id 可以访问它们,因此您可以访问每个 textview

        【讨论】:

        • 然后像这样使用它们: EditText et1 = (EditText) findViewById(R.id.editText1);字符串用户名 = et1.getText().toString();
        猜你喜欢
        • 1970-01-01
        • 2011-07-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多