Android 如何识别来自外部适配器的 Listview 按钮单击事件?

标签 android listview

我有一个自定义 ListView ,其中有一个按钮作为一个项目。

enter image description here

我想为这个按钮设置监听器。目前我在适配器中使用以下代码来识别它。

  holder.editDetails.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            //rowItem.getUserID();
            Toast.makeText(getContext(), "Done", Toast.LENGTH_SHORT).show();

            }
    });

有没有办法在适配器外部识别这个按钮的 onclick 事件。(在 Main.class 中)像

  listView.setOnItemClickListener(new OnItemClickListener() {
   });

抱歉我的英语不好

最佳答案

您可以为此创建一个接口(interface)。将您的界面传递给您的适配器,并在您单击按钮时调用它。

public interface onDoneClick{
    void onClick(View v, int position);
}

在此接口(interface)中,我们将传递适配器和 View 上的位置。

接下来将接口(interface)添加到您的适配器的构造函数,并将其保存在一个字段中。例如:

public MyAdapter(Context context, int textViewResourceId, List<MyObject> objects,onDoneClick listener ) {
    super(context, textViewResourceId, objects);
    mListener = listener;
}

现在我们有了我们的监听器,只需在您的 holder.editDetails 点击监听器上调用它:

    @Override
    public void onClick(View v) {
         mListener.onClick(v,position);//where position is the position in the adapter
      }

接下来在您的 activity 上,当您创建适配器时,只需将监听器传递给它:

    new MyAdapter(this, 0, myobjectList, new onDoneClick() {
        @Override
        public void onClick(View v, int position) {
            //whatever you want to do.
        }
    });

关于Android 如何识别来自外部适配器的 Listview 按钮单击事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26524855/

相关文章:

android - 如何在 Intellij 上重新生成 android 资源文件 (R.java)

java - 自定义微调器 : setSelection scrolling down

android - listView.setAdapter 这么卡?

android - 在单独的线程中填充 ListView

java - Firebase智能回复 : Not passing Expander filter

java - 无法解析符号 JSONParser

android - 无法将库包含到 Android Studio 项目中

javascript - 在水平滚动时动态更新 Metro listView (JS/HTML)

android - 用另一个布局替换 ListView 行 onClick

java - 如何将 OnLongClickListener 设置为 ListView 中的按钮?