[英]Android - exit activity on item click in recycler view
I've got a bunch of list items in my RecyclerView. 我的RecyclerView中有一堆列表项。 I am handling the clicks properly for each item, but I need to close the activity when any item is clicked. 我为每个项目正确处理了单击,但是单击任何项目时都需要关闭活动。 Becuase RecyclerView doesn't have setOnItemClickListener
method, I have to do this within the adapter: 因为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();
}
});
}
But of course, the adapter is not extending the Activity, so I can't use onBackPressed()
or finish()
. 但是当然,适配器不会扩展Activity,所以我不能使用onBackPressed()
或finish()
。
How can I do this? 我怎样才能做到这一点?
Use the Following: 使用以下内容:
Declare context globally. 全局声明上下文。
Context c;
Then type-cast context with your activity. 然后根据您的活动键入上下文。
((YourActivity)c).finish();
Hope this helps. 希望这可以帮助。
You can pass a reference of your activity throw the adapter constructor and call Activity.finish(); 您可以传递活动的引用以抛出适配器构造函数,并调用Activity.finish();。
Hope this Helps. 希望这可以帮助。
Sorry for my english. 对不起我的英语不好。
您可以从flagNameTextView
获取上下文:
((Activity)holder.flagNameTextView.getContext()).finish();
Just use YourActivityName.this.finish(). 只需使用YourActivityName.this.finish()。
By adding the Activity name you are telling android which "this" you want. 通过添加活动名称,您可以告诉android您想要哪个“ this”。
This will only work if your adapter is NOT defined as a static class. 仅当您的适配器未定义为静态类时,这才起作用。
Besides, you can define a interface callback like OnClickListener in RecyclerView adapter. 此外,您可以在RecyclerView适配器中定义类似OnClickListener的接口回调。 Then Implement this interface in Activity, pass it into the adapter and then use it in View's OnClickListner callback. 然后在Activity中实现此接口,将其传递到适配器中,然后在View的OnClickListner回调中使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.