我有一个活动,其中包含一个水平的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();
}
});
答案 0 :(得分:0)
添加这样的内部类,然后在主类中更改您想要的元素,而无需重新加载参数
class HorizontalAdapter extends RecyclerView.Adapter<HorizontalAdapter.MyViewHolder> {
.........
.......
@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
dochanges u want in main class
}
}