Если вы посмотрите на этот переработчик с какой-либо точки зрения роли пользователя, вы обнаружите, что данные фильтруются в соответствии с текущей зарегистрированной ролью.так что вы легко добавляете роль пользователя в класс MainItem как свойство для любого объекта, созданного из этого класса.и в функции prepareMainMenu вы можете легко фильтровать данные в соответствии с текущей зарегистрированной ролью
; сначала вы можете определить Enum для разных ролей
public enum Roles {
CustomerRole, AdminRole
}
, а затем передать эту роль как свойствоклассу MainItem, подобному этому
MainItem("Customer", imageViewMain[1],Roles.Customer);
И метод onBindView будет выглядеть следующим образом
@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) {
switch (mainItem.role) {
case Roles.CustomerRole:
context.startActivity(new Intent(context, CustomerActivity.class));
break;
case Roles.Admin:
context.startActivity(new Intent(context, AdminActivity.class));
break;
}
});
}
, и другое решение, которое выглядит намного лучше, - передать имя классаваш dto такой
class MainItem {
String title;
String image;
Class className;
public MainItem(String title, String image, Class className) {
this.title = title;
this.image = image;
this.className = className;
}
public String getTitle() {
return title;
}
public String getImage() {
return image;
}
public Class getClassName() {
return className;
}
}
, и ваши данные будут созданы
MainItem("Customer", imageViewMain[1],CustomerActivity.class);
, а ваш метод onBindView будет таким
@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) {
context.startActivity(new Intent(context, mainItem.getClassName));
});
}