【问题标题】:Constant id for all the items of a ListView making OnClick method uselessListView 的所有项目的常量 id 使 OnClick 方法无用
【发布时间】:2010-02-01 13:35:48
【问题描述】:

我对 android 很陌生,在管理列表视图时遇到了一些麻烦... 我正在正确生成一个 ListView,但其中的所有项目都有相同的 id,所以当我点击其中任何一个时,它们都会做同样的事情(这当然不是我所期望的......)

我正在从 XML URL 加载数据,并使用 SAX 解析器对其进行解析。 这是我的适配器。我的“liste”包含 6 行,每行 2 个字符串,由“&&&”分隔。 然后我显示列表视图:

  zadapter.notifyDataSetChanged();
   setListAdapter(this.zadapter);

来源如下


class InfoAdapter extends ArrayAdapter<String> {
  private ArrayList<String> items;
  public InfoAdapter(Context context, int textViewResourceId, ArrayList<String> items) {
   super(context, textViewResourceId, items);
   this.items = items;
  }

  public View getView(int position, View convertView, ViewGroup parent) {
   View v = convertView;
   if (v == null) {
    LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    v = vi.inflate(R.layout.row, null);
   }
   String liste = items.get(position);
   String[] info = liste.split("&&&");
   if (liste != null) {
    TextView tt = (TextView) v.findViewById(R.id.toptext);
    TextView bt = (TextView) v.findViewById(R.id.bottomtext);
    if (tt != null) {
     tt.setText(info[0]);
    }
    if(bt != null){
     bt.setText(info[1]);
    }
    Log.e(MY_DEBUG_TAG, "Debug position text"+tt.getId());
   }
   Log.e(MY_DEBUG_TAG, "Debug position view"+v.getId());
   return v;
  }
 }

提前感谢您的帮助。

【问题讨论】:

    标签: android listview


    【解决方案1】:

    在您的调试语句中,您拥有视图的 id,它是一个标识符,我相信您想要的是索引。

    要触发依赖于所选项目的操作, 您必须使用 ListView 中的setOnItemClickListener 方法并实现OnItemClickListener 接口。

    方法 public void onItemClick(AdapterView&lt;?&gt; list, View v, int pos, long id) 是你需要的。见方法说明here

    【讨论】:

      【解决方案2】:

      您可以请求列表视图以获取所选项目的索引,并将其与您的列表适配器结合使用来计算视图的实际数据。

      【讨论】:

      • 这就是我想要做的,但所有项目的索引似乎都是相同的......
      • 你实现的适配器有一个方法:getItemId(int position)
      【解决方案3】:

      我认为您可能希望从 BaseAdapter 扩展(不需要更多工作),因为 ArrayAdapter&lt;T&gt; 的内部对象列表对您的子类隐藏,因此您的覆盖方法使用完全不同的列表对象。

      请参阅ArrayAdapter source 了解更多详情,尤其是private List&lt;T&gt; mObjects 位。

      【讨论】:

      • 我明天去看看。谢谢你的想法。
      猜你喜欢
      • 2018-06-12
      • 1970-01-01
      • 1970-01-01
      • 2014-02-13
      • 2014-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多