我遇到了一个关于将OnItemClickListener设置为我的RecyclerView项目的问题.我尝试按照Android Studio的RecyclerView示例中描述的方式设置监听器.因此,在我的RecyclerView的ViewHolder类中设置了一个监听器.
public class ProgramViewHolder extends RecyclerView.ViewHolder {
protected TextView vName;
protected ImageView vProgramImage;
public ProgramViewHolder(View v) {
super(v);
vName = (TextView) v.findViewById(R.id.programName);
vProgramImage = (ImageView) v.findViewById(R.id.programImage);
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// HERE PROBLEM !!
MainActivity.openSettings(1);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想调用我的MainActivity openSettings(int)的方法来加载片段:
public void openSettings(int layoutId) {
settingsFragment setFrag = new settingsFragment();
Bundle information = new Bundle();
information.putInt("layoutId", layoutId);
setFrag.setArguments(information);
getFragmentManager().beginTransaction()
.replace(R.id.fragmentContainer, setFrag)
.commit();
}
Run Code Online (Sandbox Code Playgroud)
但现在问题.当我尝试编译时,它说"非静态方法'openSettings(int)'不能从静态上下文中引用." 我完全不明白这个错误.为什么它是一个静态的上下文?ProgramViewHolder类不会声明为static.
最重要的部分:我该如何解决?我想为RecyclerView的每个项目设置一个OnClickListener,并调用MainActivity的公共方法.
非常感谢你,花时间来帮助我.