处理Listview问题的每一行中的按钮事件

时间:2012-07-06 13:41:55

标签: android android-widget

我是Android的新手,我正在尝试开发一个新的Android应用程序。但我正在努力解决我项目中的一个问题。

我正在使用从baseadapter扩展的列表视图,并且需要在列表视图的每一行中添加一个按钮。当我点击列表视图的任何一行中的button时,我希望它应该被删除。但是,当我这样做时,其他一些按钮也会在列表视图中被删除。

我该如何解决这个问题?谢谢..

2 个答案:

答案 0 :(得分:1)

您有适配器,活动和某种数据源

在适配器中,您可以将一些数据附加到按钮,以便能够彼此分辨:

public class ExpAdapter extends ListAdapter {

    @Override
    public View getView(int groupPosition, boolean isExpanded,
            View convertView, ViewGroup parent) {
                /* SOME CODE HERE*/
        convertViewButton.setTag(buttonId);
        return convertView;
    }
                /* SOME CODE HERE*/
}

在您的活动中,您将按钮ID标记为要隐藏的内容:

        public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            storageOfHiddenButtonsIds.add((Long)arg1.getTag());
        }};

然后ListAdapter改变如下:

@Override
public View getView(int groupPosition, boolean isExpanded,
        View convertView, ViewGroup parent) {
            /* SOME CODE HERE*/

    convertViewButton.setTag(buttonId);

    if(storageOfHiddenButtonsIds.contains(buttonId))
    {
      convertViewButton.setVisiblity(View.GONE);
    }
    return convertView;
}

当您希望adatper改变您时,请不要忘记致电

this.expAdapterAllTaks.notifyDataSetChanged();

很抱歉我的代码中有任何错误,但我只想给你一个想法。

答案 1 :(得分:0)

我遇到了同样的问题。如果在每个listView项目上添加类似按钮的项目,则ListView的setOnItemClickListener不起作用。解决方案是在列表项布局(您在自定义适配器文件中使用)中使用onClick作为

<ImageButton
        android:id="@+id/my_delete"
        android:onClick="onDeleteButtonClickListener" 
        ... and so on />

其中 onDeleteButtonClickListener 是您在listview中设置适配器的活动中的方法。

public void onDeleteButtonClickListener(View v) {
// your code
}

这里listItem表示ListView的单个行项


有用的链接: Button in ListView item