在适配器的SetOnClickListener方法的onClick方法中获取listItem ID?

时间:2015-05-11 16:35:03

标签: android android-studio

我有一个活动,它通过自定义适配器列出数组对象中的对象。此适配器的行包含几个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的方法时,该代码正常。有人知道吗??

请不要犹豫,向我索要更多代码或详细信息。 请原谅我的英语,不是原生的。

2 个答案:

答案 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
    }   
});