[英]Passing data from an adapter to its own activity not to another activity
我有一个活动,其中包含一个水平的recyclerView,它工作正常,下面有一些textView,我需要通过单击该recyclerView中的每个项目来设置它们。 我这样做的方法是使用意图从适配器发送“项目位置”,然后重新启动整个活动以从该位置获取相关信息,但是在活动重新启动时,我又向服务器发送了一个冗余请求,这使我花了很多钱。 还有其他替代方法吗? 这是部分代码:在UserActivity中:
if (userViewModel.getStatus().equals("SUCCESS")) {
viewHolder.rView.setItemAnimator(new DefaultItemAnimator());
viewHolder.rView.setAdapter(new AddFormsListAdapter(
userViewModel.getResult(), R.layout.item_rv_request, MyApplication.getAppContext()));
intent = getIntent();
if (intent != null) {
Bundle extras = intent.getExtras();
if (extras != null) {
int position = extras.getInt("ITEM_POSITION");
viewHolder.tvCity.setText(userViewModel.getResult().get(position).getCity());
}
}
并在适配器中:
holder.setItemClickListener(new ListItemClickListener() {
@Override
public void onClick(View view, int position, boolean isLongClick) {
Intent intent = new Intent(context, UserAddRequestActivity.class);
intent.putExtra("ITEM_POSITION", position);
context.startActivity(intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
((UserAddRequestActivity) view.getContext()).finish();
}
});
像这样添加内部类,然后在主类中更改您想要的元素,而无需重新加载参数
class HorizontalAdapter extends RecyclerView.Adapter<HorizontalAdapter.MyViewHolder> {
.........
.......
@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
dochanges u want in main class
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.