将数据从一个适配器传递到它自己的 activity 而不是另一个 activity
Passing data from an adapter to its own activity not to another activity
我有一个 activity 包含一个水平的 recyclerView,它工作正常,下面有一些 textView,我需要通过单击该 recyclerView 中的每个项目来设置它们。我这样做的方法是使用 intent 从适配器发送 "item position" 并重新启动整个 activity 以从该位置获取相关信息,但是我又向服务器发送了一个冗余请求,同时 activity 重新启动。有什么替代方法吗?
这是代码的某些部分:
在用户活动中:
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,然后在 main class 中更改您想要的元素,而无需重新加载参数
class HorizontalAdapter extends RecyclerView.Adapter<HorizontalAdapter.MyViewHolder> {
.........
.......
@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
dochanges u want in main class
}
}
我有一个 activity 包含一个水平的 recyclerView,它工作正常,下面有一些 textView,我需要通过单击该 recyclerView 中的每个项目来设置它们。我这样做的方法是使用 intent 从适配器发送 "item position" 并重新启动整个 activity 以从该位置获取相关信息,但是我又向服务器发送了一个冗余请求,同时 activity 重新启动。有什么替代方法吗? 这是代码的某些部分: 在用户活动中:
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,然后在 main class 中更改您想要的元素,而无需重新加载参数
class HorizontalAdapter extends RecyclerView.Adapter<HorizontalAdapter.MyViewHolder> {
.........
.......
@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
dochanges u want in main class
}
}