简体   繁体   English

Recyclerview Onclick() 没有打开所需的活动

[英]Recyclerview Onclick() doesnt open the desired activity

I have a chatroom application in which all the chatrooms are displayed in the homepage.When the user clicks on the chatroom it opens a activity where more data about the chatroom is displayed.When I have more than one chatroom and when I click on any of the chatroom it always just opens one specific chatroom and shows it details.For example,If I open chatroom 1 it shows the details of chatroom 2 and if I click on any chatrooms from 1 to 5 it always just shows the data of chatroom one.When the user clicks on the item a documentid id passed to the activity and then in that activity data is retrieved from firebase.我有一个聊天室应用程序,其中所有聊天室都显示在主页中。当用户单击聊天室时,它会打开一个活动,其中显示有关聊天室的更多数据。当我有多个聊天室并且单击任何一个时聊天室它总是只打开一个特定的聊天室并显示它的详细信息。例如,如果我打开聊天室 1,它会显示聊天室 2 的详细信息,如果我点击从 1 到 5 的任何聊天室,它总是只显示聊天室 1 的数据。当用户单击项目时,documentid id 传递给活动,然后在该活动中从 firebase 检索数据。

My JAVA CODE for recycleView Activity我的用于回收查看活动的 JAVA 代码


public class Homepage extends Fragment  {


    private RecyclerView mRecyclerView;
    private DatabaseReference ref;
    private FirebaseDatabase database;
    private MyAdapter myAdapter;
    String documentid;
    private List<model> list;




    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View v =  inflater.inflate(R.layout.fragment_homepage, container, false);


        FloatingActionButton floatingActionButton = v.findViewById(R.id.floatingActionButton);
        mRecyclerView = v.findViewById(R.id.recyclerview);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
        database = FirebaseDatabase.getInstance();
        ref = database.getReference().child("Chatrooms").child("chatroomdata");
        list = new ArrayList<>();

        ref.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                if (snapshot.exists()) {
                    for (DataSnapshot npsnapshot : snapshot.getChildren()) {
                        model l = npsnapshot.getValue(model.class);
                        list.add(l);
                    }
                    myAdapter = new MyAdapter(list);
                    mRecyclerView.setAdapter(myAdapter);
                }

            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {
                Toast.makeText(getContext(), "Error!" + error.getMessage(), Toast.LENGTH_SHORT).show();

            }
        });






        floatingActionButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(getActivity(),createchatroom.class));
            }
        });


        return v;








    }

    public static class model{
       String Image,numberofviewers,numberofusers,adminid,allowviewers,descriptionget,title,type,documentid;

        public String getImage() {
            return Image;
        }

        public model(){

        }

        public void setImage(String image) {
            this.Image = Image;
        }

        public String getNumberofviewers() {
            return numberofviewers;
        }

        public void setNumberofviewers(String numberofviewers) {
            this.numberofviewers = numberofviewers;
        }

        public String getNumberofusers() {
            return numberofusers;
        }

        public void setNumberofusers(String numberofusers) {
            this.numberofusers = numberofusers;
        }

        public String getAdminid() {
            return adminid;
        }

        public void setAdminid(String adminid) {
            this.adminid = adminid;
        }

        public String getAllowviewers() {
            return allowviewers;
        }

        public void setAllowviewers(String allowviewers) {
            this.allowviewers = allowviewers;
        }

        public String getDescriptionget() {
            return descriptionget;
        }

        public void setDescriptionget(String descriptionget) {
            this.descriptionget = descriptionget;
        }

        public String getTitle() {
            return title;
        }

        public void setTitle(String title) {
            this.title = title;
        }

        public String getType() {
            return type;
        }

        public void setType(String type) {
            this.type = type;
        }

        public String getDocumentid() {
            return documentid;
        }

        public void setDocumentid(String documentid) {
            this.documentid = documentid;
        }

        public model(String Image, String numberofviewers, String numberofusers, String adminid, String allowviewers, String descriptionget, String title, String type, String documentid) {
            this.Image = Image;
            this.numberofviewers = numberofviewers;
            this.numberofusers = numberofusers;
            this.adminid = adminid;
            this.allowviewers = allowviewers;
            this.descriptionget = descriptionget;
            this.title = title;
            this.type = type;
            this.documentid = documentid;
        }
    }

    public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{
        private List<model> list;

        public MyAdapter(List<model> list) {
            this.list = list;
        }

        @NonNull
        @Override
        public MyAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.chatroomrecyclerdesign,parent,false);
            return new ViewHolder(view);
        }

        @Override
        public void onBindViewHolder(@NonNull MyAdapter.ViewHolder holder, int position) {
            model ld = list.get(position);
            holder.title.setText(ld.getTitle());
            holder.viewers.setText(ld.getNumberofviewers());
            documentid = ld.getDocumentid();
            String url = ld.getImage();

            if (url.equals("noimage")){
                Glide.with(getActivity()).load(R.drawable.grouppic).into(holder.circleImageView);
            }else {
                Glide.with(getActivity()).load(url).into(holder.circleImageView);
            }



        }

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

        public class ViewHolder extends RecyclerView.ViewHolder{
            private TextView title,viewers;
            CircleImageView circleImageView;

            public ViewHolder(View itemView) {
                super(itemView);
                title=itemView.findViewById(R.id.chatroomtitlerecycler);
                viewers=itemView.findViewById(R.id.chatroomviewersrecycler);
                circleImageView = itemView.findViewById(R.id.chatroomdisplayimagerecycler);

                itemView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent data = new Intent(getActivity(), joinclassroom.class);
                        data.putExtra("documentid",documentid);
                        startActivity(data);
                    }
                });


            }
        }
    }





}


The activity that shows the details of the chatroom.显示聊天室详细信息的活动。

public class joinclassroom extends AppCompatActivity {

    ImageView imageView;
    CircleImageView circleImageView;
    TextView title,description,users,viewers,type,full;
    Button join,spectate;
    String imageurl;
    int numberofchatters;
    String password,nameString,imageString;
    DatabaseReference reference;
    int getNumberofchatters = 0;
    int numberofviewers;
    String clickSpectate = "spectate";
    DatabaseReference usersnumberchatroom;
    int kitneusers = 0;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_joinclassroom);


        join = findViewById(R.id.joinclassroombtn);
        full = findViewById(R.id.full);
        circleImageView = findViewById(R.id.groupdisplayimage);
        title = findViewById(R.id.title);
        final String user_id = FirebaseAuth.getInstance().getCurrentUser().getUid();
        description = findViewById(R.id.description);
        users = findViewById(R.id.numberofusers);
        viewers = findViewById(R.id.numberofviewers);
        type = findViewById(R.id.type);
        spectate = findViewById(R.id.spectate);

        final ProgressDialog progressDialog =  new ProgressDialog(this);
        progressDialog.setMessage("Joining");
        final DatabaseReference user = FirebaseDatabase.getInstance().getReference().child("Users").child("profiledata").child(user_id);





        user.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                imageString = snapshot.child("imageUrl").getValue().toString();
                nameString = snapshot.child("Full name").getValue().toString();

            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        });


        imageView = findViewById(R.id.close);
        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(getApplicationContext(), MainActivity.class));
            }
        });

        Intent i = getIntent();
        final String s = i.getStringExtra("documentid");




        usersnumberchatroom = FirebaseDatabase.getInstance().getReference().child("Chatrooms").child("chatroomdata");
usersnumberchatroom.child(s).addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot snapshot) {
        String kitneusers1 = snapshot.child("number of users").getValue().toString();
        kitneusers = Integer.parseInt(kitneusers1);
    }

    @Override
    public void onCancelled(@NonNull DatabaseError error) {

    }
});
        spectate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent spectate = new Intent(joinclassroom.this,chatroom.class);
                spectate.putExtra("spectate",clickSpectate);
                startActivity(spectate);

                numberofviewers++;
                reference.child("numberofviewers").setValue(String.valueOf(numberofviewers));
            }
        });

        reference = FirebaseDatabase.getInstance().getReference().child("Chatrooms").child("chatroomdata").child(s);

        reference.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {

                title.setText(snapshot.child("title").getValue().toString());
                description.setText(snapshot.child("descriptionget").getValue().toString());
                users.setText(snapshot.child("number of users").getValue().toString() + "/10");
                viewers.setText(snapshot.child("numberofviewers").getValue().toString());
                type.setText(snapshot.child("type").getValue().toString());

                if (snapshot.child("allowviewers").getValue().toString().equals("dontallowviewers")) {
                    spectate.setVisibility(View.GONE);
                    viewers.setVisibility(View.GONE);

                } else {
                    spectate.setVisibility(View.VISIBLE);
                    spectate.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            startActivity(new Intent(getApplicationContext(), chatroom.class));
                        }
                    });
                }

                if (snapshot.child("type").getValue().toString().equals("Private")) {
                    password = snapshot.child("password").getValue().toString();
                    final Bundle bundle = new Bundle();
                    bundle.putString("password", password);
                    bundle.putString("chatroomidprivate", s);

                    join.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            progressDialog.show();
                            DatabaseReference reference1 = FirebaseDatabase.getInstance().getReference().child("Chatrooms").child("members").child(s);
                            Map<String, Object> memberadd = new HashMap<>();
                            memberadd.put("name", nameString);
                            memberadd.put("Image", imageString);
                            memberadd.put("id", FirebaseAuth.getInstance().getCurrentUser().getUid());

                            reference1.child(user_id).setValue(memberadd).addOnSuccessListener(new OnSuccessListener<Void>() {
                                @Override
                                public void onSuccess(Void aVoid) {
                                    getNumberofchatters++;
                                    reference.child("numberofusers").setValue(String.valueOf(getNumberofchatters));
                                    progressDialog.dismiss();
                                    bottomsheet bottomsheet = new bottomsheet();
                                    bottomsheet.setArguments(bundle);
                                    bottomsheet.show(getSupportFragmentManager(), "bottomsheet");
                                }
                            });
                        }
                    });

                } else {
                    join.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {

                            DatabaseReference reference1 = FirebaseDatabase.getInstance().getReference().child("Chatrooms").child("members").child(s);
                            Map<String, Object> memberadd = new HashMap<>();
                            memberadd.put("name", nameString);
                            memberadd.put("Image", imageString);
                            memberadd.put("id", FirebaseAuth.getInstance().getCurrentUser().getUid());

                            reference1.child(user_id).setValue(memberadd).addOnSuccessListener(new OnSuccessListener<Void>() {
                                @Override
                                public void onSuccess(Void aVoid) {
                                    getNumberofchatters++;
                                    reference.child("numberofusers").setValue(String.valueOf(getNumberofchatters));
                                    progressDialog.dismiss();

                                    Intent intent = new Intent(joinclassroom.this, chatroom.class);
                                    intent.putExtra("chatroomidpublic", s);
                                    startActivity(intent);
                                }
                            });

                        }
                    });
                }
                numberofchatters = Integer.parseInt(snapshot.child("number of users").getValue().toString());

                if (numberofchatters >= 10) {
                    join.setVisibility(View.GONE);
                    full.setVisibility(View.VISIBLE);
                } else {
                    full.setVisibility(View.GONE);
                    join.setVisibility(View.VISIBLE);

                }
                imageurl = snapshot.child("Image").getValue().toString();

                if (imageurl.equals("noimage")) {

                    Glide.with(getApplicationContext()).load(R.drawable.grouppic).into(circleImageView);

                } else {
                    Glide.with(getApplicationContext()).load(imageurl).into(circleImageView);
                }
            }


            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        });
    }
}

Modified here in your code在您的代码中修改此处

 itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent data = new Intent(getActivity(), joinclassroom.class); data.putExtra("documentid",documentid); getActivity().startActivity(data); } });

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

相关问题 将对象从RecyclerView发送到onclick新活动 - Send object from RecyclerView to new activity onclick 从包含卡片的Recyclerview中打开新活动 - Open new activity from Recyclerview containing cards 如何使用 firebase 数据库在 recyclerview 中打开新活动 - How to open new activity in recyclerview with firebase database OnClick Listener Recyclerview 打开不同的活动打开 pdf 文件 - OnClick Listener Recyclerview to open different activities to open pdf files 在FirestoreRecyclerAdapter中实现onClick打开一个新的Activity - Implementation onClick in FirestoreRecyclerAdapter to open a new Activity Onclick 无法从片段适配器打开活动 - Onclick to open activity from adapter of fragment not working 返回上一个活动,点击回收站的“额外输入”按钮 - Go back to previous Activity with some `put extra` onClick of a recyclerView Item 将活动转换为片段会阻止RecyclerView onclick侦听器正常工作 - Converting activity into fragment is stops the RecyclerView onclick listener from working 如何在 recyclerview 中提供 onclick 以从 mysql 获取另一个活动的值 - how to give onclick in recyclerview to get values to another activity from mysql 在哪里以及如何将 onclick 放入 recyclerview 以获取包含该片段的活动的结果? - where and how to put a onclick in recyclerview to get the result in the activity that contain the fragment?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM