Я новичок в android Я пытаюсь сгруппировать изображения в recyclerview по дате Я передаю отсортированную дату в ArrayList, а HashMap содержит дату как ключ и путь к изображению как значение, все работает нормально, но проблема в отображении текстового представления не отображается, а изображения не отображаются в сетке
Результат, который я хочу:
Результат, который я получаю:
Адаптер My RecyclerView
public class ImageRecycler extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final String TAG = "RecyclerException";
ArrayList<Date> list;
Activity activity;
String date="";
HashMap<String,String> data;
private static final int DATEVIEW = 1;
public ImageRecycler(ArrayList<Date> list, Activity activity,HashMap<String,String> data){
this.list=list;
this.activity=activity;
date=list.get(0).toString();
date=date.substring(0,11);
this.data=data;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view;
if(viewType==DATEVIEW) {
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.single_image, parent, false);
return new MyViewHolder(view);
}
else {
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.single_text, parent, false);
return new MyTextHolder(view);
}
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, final int position) {
final String ImageDate = list.get(position).toString();
final String ImageDateSub=ImageDate.substring(0,11);
String ImagePath=data.get(ImageDate);
if(holder.getItemViewType()!=DATEVIEW) {
((MyTextHolder)holder).textView.setText(ImageDateSub);
}
else{
Glide.with(activity)
.asBitmap()
.load(ImagePath)
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
.into(((MyViewHolder)holder).imageView);
}
}
@Override
public int getItemViewType(int position) {
super.getItemViewType(position);
String temp=list.get(position).toString().substring(0,11);
if(date.compareTo(temp)!=0){
date=temp;
return 0;
}
else
return DATEVIEW;
}
@Override
public int getItemCount() {
return list.size();
}
public class MyTextHolder extends RecyclerView.ViewHolder{
TextView textView;
public MyTextHolder(@NonNull View itemView){
super(itemView);
textView=itemView.findViewById(R.id.date);
}
}
public class MyViewHolder extends RecyclerView.ViewHolder{
ImageView imageView;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
imageView=itemView.findViewById(R.id.listImage);
}
}
}
Фрагмент
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_images,container,false);
recyclerView=view.findViewById(R.id.ImageList);
layoutManager=new GridLayoutManager(getContext(),4);
layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
int i = imageRecycler.getItemViewType(position) == imageRecycler.DATEVIEW ? 4 : 1;
return i;
}
});
recyclerView.setLayoutManager(layoutManager);
return view;
}