I have 2 types of users. the first user can see all the data at recycler view. the second user only can see specific data at recycler view.
Right now I only able to display the specific data, once the second user clicked, it will display the first data, not according to the position.
How to fix user clicks at the right display and will proceed at the right data?
MainActivity.java. Preparing to display a recycler view according to condition.
private void prepareMainMenu(final String type) {
MainItem mainItem;
switch (type) {
case "Customer":
mainItem = new MainItem("Customer", imageViewMain[1]);
mainItemList.add(mainItem);
break;
case "Packages":
mainItem = new MainItem("Packages", imageViewMain[2]);
mainItemList.add(mainItem);
break;
case "Live Chat":
mainItem = new MainItem("Live Chat", imageViewMain[3]);
mainItemList.add(mainItem);
break;
case "Transaction":
mainItem = new MainItem("Transaction", imageViewMain[5]);
mainItemList.add(mainItem);
break;
case "Profit Report":
mainItem = new MainItem("Profit Report", imageViewMain[4]);
mainItemList.add(mainItem);
break;
case "Owner":
mainItem = new MainItem("Admin", imageViewMain[0]);
mainItemList.add(mainItem);
mainItem = new MainItem("Customer", imageViewMain[1]);
mainItemList.add(mainItem);
mainItem = new MainItem("Packages", imageViewMain[2]);
mainItemList.add(mainItem);
mainItem = new MainItem("Live Chat", imageViewMain[3]);
mainItemList.add(mainItem);
mainItem = new MainItem("Profit Report", imageViewMain[4]);
mainItemList.add(mainItem);
mainItem = new MainItem("Transaction", imageViewMain[5]);
mainItemList.add(mainItem);
break;
}
//Display
mainViewAdapter.notifyDataSetChanged();
}
MainViewAdapter.java (where the user will click)
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, final int position) {
MainItem mainItem = mainItemList.get(position);
holder.getTextViewTitle().setText(mainItem.getNameMain());
Glide.with(context)
.load(mainItem.getImageMain())
.into(holder.imageViewMain);
holder.getView().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Check the position
switch (position) {
case 0:
context.startActivity(new Intent(context, AdminActivity.class));
break;
case 1:
context.startActivity(new Intent(context, CustomerActivity.class));
break;
case 2:
context.startActivity(new Intent(context, PackagesSelectorActivity.class));
break;
case 3:
context.startActivity(new Intent(context, LiveChatActivity.class));
break;
case 4:
context.startActivity(new Intent(context, ProfitReportActivity.class));
break;
case 5:
context.startActivity(new Intent(context, TransactionActivity.class));
break;
}
}
});
}
UPDATED: This is where the method prepareMainMenu goes.
private void retrieveData() {
if (firebaseUser != null) {
databaseReference.child("admin").child(firebaseUser.getUid()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
Admin admin = dataSnapshot.getValue(Admin.class);
if (admin != null) {
fullName = admin.getFullName();
email = admin.getEmail();
type = admin.getType();
//Then display
textViewFullName.setText(fullName);
textViewEmail.setText(email);
textViewType.setText(type);
//Check the type of admin
switch (type) {
case "Customer":
prepareMainMenu("Customer");
break;
case "Packages":
prepareMainMenu("Packages");
break;
case "Live Chat":
prepareMainMenu("Live Chat");
break;
case "Transaction":
prepareMainMenu("Transaction");
break;
case "Profit Report":
prepareMainMenu("Profit Report");
break;
case "Owner":
prepareMainMenu("Owner");
break;
}
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
from Recycerview display specific data
No comments:
Post a Comment