【问题标题】:Android: ListFragment get clicked item within ListItemAndroid:ListFragment 在 ListItem 中获取被点击的项目
【发布时间】:2014-06-11 18:40:09
【问题描述】:

我的应用程序包含 3 个选项卡。所有选项卡都包含列表,所以我使用了 ListFragment。每个 ListItem 中都有一个按钮。如图所示,当在ListItem中单击“Click”按钮时,我想做“something”。

我该如何实现这一点。有一些关于为 ListActivity 做同样的事情,但不是 ListFragment。在此先感谢。 :)

【问题讨论】:

  • 我已经接受了我在问题中提到的一切:) 我们如何获得在 OnItemClickListener() 中点击的元素的 id?

标签: android android-listview android-listfragment


【解决方案1】:

首先,您需要为您的 ListView 实现一个自定义适配器。如果您对此不熟悉,请阅读this article

接下来,您必须禁用单击 ListView 项目。如果您不知道如何操作,请查看this

现在,在您的自定义适配器的 getView 方法中,您可以找到您的 Button 并设置一个 onClickListener,但前提是您必须为当前 ListView 位置膨胀视图。

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = (LayoutInflater) context
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View rowView = inflater.inflate(R.layout.rowlayout, parent, false);
    TextView textView = (TextView) rowView.findViewById(R.id.label);
    textView.setText(values[position]);

    Button mButton = (Button) view.findViewById(R.id.my_button_id);
    mButton.setOnClickListener(mClickListener);

    return rowView;
}

【讨论】:

  • 非常感谢 :) 我做到了!你的回答很有帮助!
  • 我还有一个疑问。当我从 sqlite 表中删除一些记录(ListItem)时。它应该反映在 ListFragment 中。如何刷新 ListView?
  • 首先,我建议您不要直接使用数据库,因为它的运行速度非常慢,而是将数据保存在某种缓存内存中并从中更新您的 UI 并同步数据库。其次,如果您的数据已更改并且您想更新您的列表视图,只需调用 adapter.notifyDataSetChanged(),其中适配器是之前在您的列表视图中设置的适配器。
  • 但我正在使用对话框更新自定义适配器中的表格。我希望在关闭对话框时更新 ListView。我们不能使用 adapter.notifyDataChanged(),但是我们可以在自定义适配器中只使用 notiftDataChanged,但这不起作用!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-01
相关资源
最近更新 更多