将数据从适配器传递到其自己的活动,而不传递到另一个活动

时间:2018-10-27 07:45:20

标签: android android-intent android-activity android-recyclerview adapter

我有一个活动,其中包含一个水平的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();

        }
    });

1 个答案:

答案 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
}

}