Могу ли я использовать значение метода ItemCount () в другом классе / Activity? - PullRequest
1 голос
/ 05 ноября 2019

Метод ItemCount recyclerView:

@Override
public int getItemCount() {
    Log.e("Notification Size is " ,String.valueOf(slideshowModelList.size()));

    return slideshowModelList.size();
}

Выход LogOutput: 8

Вот мой полный код класса адаптера:

public class SlideShowAdapter extends RecyclerView.Adapter<SlideShowAdapter.ViewHolder> {

Context context;
List<SlideshowModel> slideshowModelList;

public SlideShowAdapter(Context context, List<SlideshowModel> slideshowModelList) {
    this.context = context;
    this.slideshowModelList = slideshowModelList;
}

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

@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
    SlideshowModel slideshowModel = slideshowModelList.get(position);
    Picasso.get().load(slideshowModel.getImage()).fit().centerCrop().placeholder(R.drawable.placeholders).into(holder.image);
    holder.title.setText(slideshowModel.getTitle());
    holder.description.setText(slideshowModel.getDesc());
    holder.date.setText(slideshowModel.getDate());

    if (getItemCount() !=1){
        holder.notif_icon.setVisibility(View.VISIBLE);
    }
    else{
        holder.notif_icon.setVisibility(View.GONE);
    }
}

@Override
public int getItemCount() {
    Log.e("Notification Size is " ,String.valueOf(slideshowModelList.size()));

    return slideshowModelList.size();
}

class ViewHolder extends RecyclerView.ViewHolder{
    ImageView image,notif_icon;
    TextView title,description,date;

    public ViewHolder(@NonNull View itemView) {
        super(itemView);

        image= itemView.findViewById(R.id.imagecontent);
        title = itemView.findViewById(R.id.title);
        description = itemView.findViewById(R.id.desc);
        date= itemView.findViewById(R.id.date);
        notif_icon= itemView.findViewById(R.id.notif_icon);

    }
}
}

Могу ли я использовать этоgetItemCount () значение в другом классе / Activity, которое не связано с родительским классом recyclerView?

РЕДАКТИРОВАТЬ: В моей MainActivity полученное значение:

E / Размер уведомленияis: 0

Принимая во внимание, что в моем RecyclerView Activity я получаю значение как: E / Размер уведомления: 2

Ответы [ 2 ]

0 голосов
/ 05 ноября 2019

попробуйте

SlideShowAdapter  adpater=new SlideShowAdapter(context,list);
int count=adapter.getItemCount();
0 голосов
/ 05 ноября 2019

Измените свой адаптер, как показано ниже

public class SlideShowAdapter extends RecyclerView.Adapter<SlideShowAdapter.ViewHolder> {

Context context;
List<SlideshowModel> slideshowModelList;
ListSize listSize;

public SlideShowAdapter(Context context, List<SlideshowModel> slideshowModelList, ListSize listSize) {
    this.context = context;
    this.slideshowModelList = slideshowModelList;
    this.listSize = listSize;
}

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

@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
    SlideshowModel slideshowModel = slideshowModelList.get(position);
    Picasso.get().load(slideshowModel.getImage()).fit().centerCrop().placeholder(R.drawable.placeholders).into(holder.image);
    holder.title.setText(slideshowModel.getTitle());
    holder.description.setText(slideshowModel.getDesc());
    holder.date.setText(slideshowModel.getDate());

    if (getItemCount() !=1){
        holder.notif_icon.setVisibility(View.VISIBLE);
    }
    else{
        holder.notif_icon.setVisibility(View.GONE);
    }
}

@Override
public int getItemCount() {
    Log.e("Notification Size is " ,String.valueOf(slideshowModelList.size()));
    listSize.itemCount(slideshowModelList.size());
    return slideshowModelList.size();
}

class ViewHolder extends RecyclerView.ViewHolder{
    ImageView image,notif_icon;
    TextView title,description,date;

    public ViewHolder(@NonNull View itemView) {
        super(itemView);

        image= itemView.findViewById(R.id.imagecontent);
        title = itemView.findViewById(R.id.title);
        description = itemView.findViewById(R.id.desc);
        date= itemView.findViewById(R.id.date);
        notif_icon= itemView.findViewById(R.id.notif_icon);

    }
  }
  interface ListSize{
     void itemCount(int size);
  }
}

Внедрите интерфейс ListSize в свою деятельность

class Activity extends AppCompactActivity implements ListSize.itemCount{
    @override
    void itemCount(int size){
        log.d("sizeoflist", size);
    }
}
...