我的RecyclerView中有一堆列表项。我正在为每个项目正确处理点击,但是我需要在点击任何项目时关闭活动。但是,使用setOnItemClickListener
方法,我不得不在适配器中执行此操作:
@Override
public void onBindViewHolder(final Holder holder, int position) {
// ...
holder.flagNameTextView.setText(arrayList.get(position).getName());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Go back to the previous activity
// such as onBackPressed();
}
});
}
但当然,适配器不会扩展活动,因此我无法使用onBackPressed()
或finish()
。
我该怎么做?
答案 0 :(得分:2)
使用以下内容:
全局声明上下文。
Context c;
然后用你的活动打字投射上下文。
((YourActivity)c).finish();
希望这有帮助。
答案 1 :(得分:1)
您可以传递活动的引用,抛出适配器构造函数并调用Activity.finish();
希望这有助于。
抱歉我的英文。
答案 2 :(得分:0)
您可以从flagNameTextView
:
((Activity)holder.flagNameTextView.getContext()).finish();
答案 3 :(得分:0)
只需使用YourActivityName.this.finish()。
通过添加活动名称,你告诉android你想要哪个“这个”。
仅当您的适配器未定义为静态类时才会起作用。
答案 4 :(得分:0)
此外,您可以在RecyclerView适配器中定义类似OnClickListener的接口回调。然后在Activity中实现此接口,将其传递给适配器,然后在View的OnClickListner回调中使用它。