【问题标题】:Android: passing a OnClickListener into an adapterAndroid:将 OnClickListener 传递给适配器
【发布时间】:2016-04-23 18:45:40
【问题描述】:

问题:

在Activity中设置OnLongClickListener时如何将其传递给适配器?

适配器的构造函数:

public Activity mcontext;
public View.OnLongClickListener LongClicking;

public SubjectsAdapter(Activity context, View.OnLongClickListener longClick) {
    this.mcontext = context;
    this.LongClicking = longClick;
}

在活动中:

adapter = new SubjectsAdapter(this, /*A OnLongClickListener here */ );

我知道这可能是一个密集的问题,我对 android 比较陌生

【问题讨论】:

    标签: java android


    【解决方案1】:

    基本上你可以将它作为匿名类传递

    adapter = new SubjectsAdapter(this, new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View view) {
                //do your stuff
            }
        } );
    

    但是如何为特定视图注册此回调?我建议为视图注册它,它对此回调感兴趣setOnLongClickListener 而不是将其传递给适配器(但这取决于您的应用程序)。

    yourview.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View view) {
                //do your stuff
            }
        });
    

    【讨论】:

    • 第一个选项与在适配器的 ViewHolder 中设置 OnLongCLickListener 不一样吗? (我正在使用 RecyclerView)
    • 是的,你可以这样做。您还可以在您的特定RecyclerView.ViewHolder 中实现View.OnLongClickListener。请参阅此this answer 或此this
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 2021-03-28
    • 2020-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多