繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM