【问题标题】:method call from adapter class to activity从适配器类到活动的方法调用
【发布时间】:2016-09-02 16:02:58
【问题描述】:

适配器:

check_list_item.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        JPrequirements.prepareSelection(v, getAdapterPosition());
    }
});

JPrequirements 是活动。 prepareSelection 是活动内部的非静态方法。我无法从适配器访问它。

错误:

不能从静态上下文中引用非静态方法

这是对的。这就是我尝试的原因:

JPrequirements().prepareSelection(v, getAdapterPosition()); // Creating an instance...

但是,问题是我在这里丢失了所有活动组件。例如。布局组件和其他支持变量。我不想那样。处理这个问题的最佳方法是什么?如何从适配器获取更新值到活动?所以,我可以实时显示它。

谢谢。

【问题讨论】:

  • 你可以使用接口。

标签: java android android-adapter static-methods


【解决方案1】:

您可以通过interface 实现此目的。首先,定义一个interface 类为:

public interface ActivityAdapterInterface {
    public void prepareSelection(View v, int position);
}

现在,在您的Activity 中实现interface

public class JPrequirements extends AppCompatActivity implements ActivityAdapterInterface {
    ...
    public void prepareSelection(View v, int position) {
        // cool stuff here
    }
    ...
}

确保通过其构造函数将this 接口引用传递给Adapter。然后最后在点击时调用它:

check_list_item.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) {
        mActivityAdapterInterface.prepareSelection(v, getAdapterPosition());
    } 
}); 

[编辑]

要将interface 提供给您的Adapter,请为其提供构造函数。

public class YourAdapter ... {

    private ActivityAdapterInterface mActivityAdapterInterface;

    public YourAdapter(..., ActivityAdapterInterface activityAdapterInterface) {
        activityAdapterInterface = mActivityAdapterInterface;
    }

}

【讨论】:

  • 完全像这样:-)
  • 如何在适配器中获得mActivityAdapterInterface
  • @RonakPatel 检查我上面的适配器
  • 如何通过界面在界面中显示进度?
猜你喜欢
  • 2018-11-07
  • 1970-01-01
  • 1970-01-01
  • 2015-01-27
  • 1970-01-01
  • 1970-01-01
  • 2016-08-21
  • 1970-01-01
  • 2016-12-11
相关资源
最近更新 更多