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