我有一个活动,它通过自定义适配器列出数组对象中的对象。此适配器的行包含几个EditText和一个可单击的布局,并选择删除该对象。我的目的是通过单击项目(显示另一个活动)并通过单击布局删除来更新对象。所以,我必须通过不同的setOnItemClickListener来实现更新和删除。
我已完成更新,只需将setOnItemClickListener设置为对象的listView,并通过putExtra和getIntent将整个对象发送到新活动。
问题在于删除。我已经在适配器上直接实现了OnClickListener,如下所示:
holder.layoutEliminar.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//Here call to an Async Task to delete the object but, what about t the id object???
}
当我单击行的布局但是我不知道获取listView中所选对象的id的方法时,该代码正常。有人知道吗??
请不要犹豫,向我索要更多代码或详细信息。 请原谅我的英语,不是原生的。
答案 0 :(得分:0)
您可以在getView
上为视图设置标记:
holder.layoutEliminar.setTag(theIdOfYourObject);
请注意,View.setTag(Object tag)
会将Object
作为参数(documentation)。我将假设您要将要删除的对象的ID设置为String
标记。
然后,在onClick
holder.layoutEliminar.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
LinearLayout layoutEliminar;
// Retrieve your layoutEliminar from v
// ...
// Get the id of the object to delete from the tag
String id = (String) layoutEliminar.getTag();
}
};
答案 1 :(得分:0)
我已经在@Antonio的帮助下做过了。我没有使用Tag,我已经将指令getItem(position).getId()用于方法onClick来引用对象的id(不知道它是否是' s最好,更有效的方法)。像这样:
holder.btnEliminar.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.i("PedidosAdapter dd: ",String.valueOf(getItem(position).getId()));
//Async Task for deleting the object with that ID
}
});