2

我正在尝试在ListView具有多个选项的项目中创建一个项目;查看编辑。我想以与 android 的联系人系统完全相同的方式创建它 - 见下文:

android联系人应用程序中的类似功能

我添加了红色框来说明我想要的行为。如果您在左侧红框内按下,您将呼叫该联系人。如果您在右侧的红色框内按,您会向联系人发送一条短信。我已经在 XML 中创建了类似的布局,但是在代码中实现此功能时遇到了麻烦。

我曾尝试为android:onClick项目中的单独布局创建自定义函数调用,但调用onClick方法只允许您传入View作为参数,而不是位置。需要位置使用listview.getItemAtPosition功能,我尝试使用listview.getPositionForView返回位置,但发现这个非常不稳定,很容易因为视图回收而返回错误的定位。

实现由每个项目上具有多个按钮/布局的项目填充的列表的最佳方法是什么?

4

2 回答 2

0

在仍然使用单个android:onClick函数的同时完成此操作的一种setTag()方法是利用每个可点击视图的方法来存储作为项目位置的整数。例如在您的适配器中getView()

@Override
public View getView(int position, View convertView, ViewGroup arg2) {
    ...
    ImageView textMessageView = (ImageView)convertView.findViewById(R.id.whatever);
    textMessageView.setTag(new Integer(position));
    ...
}

然后在您的onClick()方法中,您可以执行以下操作:

@Override
public void onClick(View clickedView) {
    int position = clickedView.getTag() instanceof Integer ? ((Integer)clickedView.getTag()).intValue() : -1;
    ...
}

不知道它是否理想,但它允许您使用 XMLandroid:onClick工具并且不涉及onClick为每个列表视图项创建单独的侦听器。

于 2013-09-23T14:06:32.467 回答
0

我也从事过类似的项目。为此,我创建了自己的布局,有两个线性布局,分别是linearLayoutLeftlinearLayoutRight

然后我将此布局添加到 listView。

然后我提到了Listview的onClickListener,我用来获取在listView中的位置被点击的视图。所以对于listView 中的每一行,我有两个linearLayouts,它们有自己的onClickListeners。

于 2013-09-23T14:27:17.870 回答