【问题标题】:custom ListView - get id of item when i click on a button located inside the list自定义 ListView - 当我单击位于列表内的按钮时获取项目 ID
【发布时间】:2014-09-08 09:28:43
【问题描述】:

我有一个自定义 ListView,里面有一个按钮,当我点击这个按钮时,不会调用 onItemClickListener(),而是调用按钮的 onClick() 方法。
我想要实现的是获取我单击的按钮所在的列表项的 id(我需要这个 id 来从我的数据库中删除好的条目)。

这是我的适配器:

sa = new SimpleAdapter (this.getBaseContext(), listItem, R.layout.list_mission,
                        new String[] {"marque", "date"}, new int[] {R.id.list_vehicule, R.id.list_date});

谢谢!

【问题讨论】:

  • 发布您的自定义适配器。
  • @bumblebeez 通过将 false 设置为两者来检查我的答案,您将能够单击 OnitemClick 以及按钮单击侦听器 ...

标签: android android-listview


【解决方案1】:

您可以使用interface 实现此目的。像这样创建您的自定义类:

public interface MyCustomClickListener{
      public void onMyClickListener(int id){}
}

在您的自定义适配器中,您可以像这样使用interface:

private MyCustomClickListener mMyClickListener;

public MyAdapter(Activity activity){
    try {
        mMyClickListener = (MyCustomClickListener) activity;
    } catch(ClassCastException e){
        throw new ClassCastException(activity + " must implements MyCustomClickListener");
    }
}

@Override
public View getView(int position, View convertView, ViewGroup parent){

    Button mMyBtn = // initialise Button
    mMyBtn.setOnClickListener(new View.OnClickListener){

        @Override
        public void onClick(View view){
            mMyClickListener.onMyClickListener(position);
        }

    };
}

在你的Activity:

public class MyActivity extends Activity implements MyCustomClickListener{

    @Override
    public void onMyClickListener(int id){
        // your id
    }

}

这应该像一个魅力! :)

【讨论】:

  • “在您的自定义适配器中”是什么意思?
  • 你的 ListView 适配器。
  • 我使用 simpleadapter 的唯一时刻是我在问题中发布的 2 行,我真的不明白我应该如何使用这部分代码!抱歉,我对 android 开发很陌生
  • 您应该创建一个自定义适配器,以使用此方法。以下是一些如何实现此目的的示例:vogella.com/tutorials/AndroidListView/article.html
【解决方案2】:

您可以使用setTag

例如:item_0中有一个button_0

在getView:

button_0.setTag(position)

在你的onClick

您可以通过v.getTag()获取职位

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-30
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多