简体   繁体   English

如何将视图ID从回收站适配器传递给活动?

[英]How to pass the view Id from Recycler Adapter to Activity?

I am trying to pass view Id from Recyclerview Adapter to Activity,when the Recycler view List item is clicked. 单击“ Recycler视图列表”项时,我试图将视图ID从Recyclerview Adapter传递给Activity。

public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> implements FastScrollRecyclerView.SectionedAdapter{

    public interface OnRecyclerItemClickListener {
        void onRecyclerItemClick(User data,int id);
    }

    List<User> dataSource;
    private OnRecyclerItemClickListener onRecyclerItemClickListener;
    private Context context;
    public ActiveBeepsAdapter(List<User> dataArgs, OnRecyclerItemClickListener onRecyclerItemClickListener,Context context) {
        this.dataSource = dataArgs;
        this.onRecyclerItemClickListener = onRecyclerItemClickListener;
        this.context = context;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        // create a new view
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.single_active_message, parent, false);
        ViewHolder viewHolder = new ViewHolder(view, onRecyclerItemClickListener);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        User user = dataSource.get(position);
        holder.tvId.setText(user.getId());
        Picasso.with(context)
            .load(user.getProfilePicUrl())
            .placeholder(R.drawable.bg_logo)
            .error(R.drawable.bg_logo)
            .transform(new CircleTransform())
            .into(holder.ivUserProfile);   
    }

    @Override
    public int getItemCount() {
        return dataSource.size();
    }

    @NonNull
    @Override
    public String getSectionName(int i) {
        return String.valueOf(dataSource.get(i).getId().charAt(0));
    }

    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        private OnRecyclerItemClickListener onRecyclerItemClickListener;
        User data = new User();
        TextView tvId;
        ImageView ivUserProfile;
        public ViewHolder(View itemView, OnRecyclerItemClickListener onRecyclerItemClickListener) {
            super(itemView);
            this.onRecyclerItemClickListener = onRecyclerItemClickListener;
            tvId = (TextView)itemView.findViewById(R.id.tvName);
            ivUserProfile = (ImageView)itemView.findViewById(R.id.ivProfilePic); 
        }

        @Override
        public void onClick(View v) {
            int position = getAdapterPosition();
            User user = dataSource.get(position);
            int id = v.getId();
            onRecyclerItemClickListener.onRecyclerItemClick(user,id);
        }
    }
}

Suppose, If the Profile Image is clicked, the view id should sent to activity.. 假设,如果单击“个人档案图像”,则视图ID应该发送给活动。

And My Activity 和我的活动

    @EActivity
    public class ActiveMessage extends AppCompatActivity implements Adapter.OnRecyclerItemClickListener{

        @ViewById(R.id.toolbar)
        Toolbar toolbar;

        @ViewById(R.id.rvactiveMessage)
        FastScrollRecyclerView rvmessage;

        List<User> allUser;

        @ViewById(R.id.toolbar_title)
        TextView tv_toolbar;

        @AfterViews
        protected void init(){

            toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_arrow_drop_down_black_24dp));
            setSupportActionBar(toolbar);
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            tv_toolbar.setText("Active Message");
            toolbar.setNavigationOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    onBackPressed();
                }
            });
            allUser = new ArrayList<>();
            User user;
            String fullName[] = {"ajay","kamal","akhil"};
            String id[] = {"its_ajay","its_kamal","its_akhil"};
            for(int i=0;i<id.length;i++){
               user = new User();
               user.setId(id[i]);
               user.setFullName(fullName[i]);
               allUser.add(user);
            }
Adapter adapter = new Adapter(allUser,this,getApplicationContext());
rvmessage.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
rvmessage.setAdapter(activeBeepsAdapter);

        }

        @Override
        public void onRecyclerItemClick(User data,int id) {
            if (!Utils.isNetworkAvailable(getApplicationContext())) {
                   noInternet();
            }
            // tvName has multiple Implementation  
            if (id == R.id.tvName){
                 Log.d("Id",data.getId());
            }
        }
        public void noInternet(){

            final Dialog dialog = new Dialog(this);
            dialog.setContentView(R.layout.alert_dialog);
            dialog.show();
        }
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_active_message);
        }
        @Override
        public void onBackPressed() {
            super.onBackPressed();
            finish();
        }
    }

In my Activity, If the ProfileImage is clicked, pop up the dialog box. 在我的活动中,如果单击ProfileImage,则弹出对话框。
Also, i need to check if there is Internet Connection when the list Item is clicked. 另外,单击列表项时,我需要检查是否有Internet连接。

In adapter onClick method instead of id pass view: 在适配器的onClick方法而不是id传递视图中:

    @Override
    public void onClick(View v) {
        int position = getAdapterPosition();
        User user = dataSource.get(position);
        int id = v.getId();
        onRecyclerItemClickListener.onRecyclerItemClick(user,v);
    }

Now in Activity 现在处于活动状态

@Override
    public void onRecyclerItemClick(User data,View view) {
        if (!Utils.isNetworkAvailable(getApplicationContext())) {
               noInternet();
        }
        // tvName has multiple Implementation  
        if (view.getId() == R.id.tvName){
             Log.d("Id",data.getId());
        }
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何将数据从活动传递到 android 中的回收器视图适配器 - How to pass data from a activity to a recycler view adapter in android 如何将ID从回收站视图传递到片段? - How to pass id from recycler view to fragment? 如何从Recycler-View适配器接收活动中的点击事件 - How to receive click event in activity from a recycler-view adapter 从回收者视图适配器到活动中获取价值 - Get value from recycler view Adapter to activity 如何在构造函数中传递 Recycler 视图适配器? - How to pass a Recycler view adapter in a constructor? 如何将 Recycler 视图中的详细信息传递给另一个活动? - How to pass the details from Recycler view to another activity? 如何从回收者视图导航到其他活动并传递参数 - How to navigate from recycler view to an other activity and pass parameters 如何将json图像从回收者视图传递到另一个活动 - How to pass json image from recycler view to another activity 如何将数据从回收站视图传递到另一个活动 - How to pass data from recycler view to another activity 如何从回收者视图中获取主要活动中微调器的ID? - How to get id of a spinner in main activity from a recycler view?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM