我是Android的新手,我正在尝试开发一个新的Android应用程序。但我正在努力解决我项目中的一个问题。
我正在使用从baseadapter
扩展的列表视图,并且需要在列表视图的每一行中添加一个按钮。当我点击列表视图的任何一行中的button
时,我希望它应该被删除。但是,当我这样做时,其他一些按钮也会在列表视图中被删除。
我该如何解决这个问题?谢谢..
答案 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