I want to show images from array in recyclerview so I pass array to adapter but recyclerview does not bind to adapter because I used "Log.d" in "onBindViewHolder" but Log doesn't show message.Whats wrong with my code?Is there other solution?
in fragment:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_plan, container, false);
paths[0] = "/storage/emulated/0/demonuts_upload_gallery/1543839716755.jpg";
paths[1] = "/storage/emulated/0/demonuts_upload_gallery/1543839716755.jpg";
paths[2] = "/storage/emulated/0/demonuts_upload_gallery/1543839716755.jpg";
paths[3] = "/storage/emulated/0/demonuts_upload_gallery/1543839716755.jpg";
paths[4] = "/storage/emulated/0/demonuts_upload_gallery/1543839716755.jpg";
adapter = new ImagesBodyAdapter(view.getContext());
LinearLayoutManager layoutManager = new LinearLayoutManager(view.getContext(),LinearLayoutManager.HORIZONTAL, false);
recyclerView = view.findViewById(R.id.recycler);
recyclerView.setLayoutManager(layoutManager);
adapter.addItems(paths);
adapter.notifyDataSetChanged();
recyclerView.setAdapter(adapter);
Adapter class is:
public class ImagesBodyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private String[] PATHS = new String[5];
private Context context;
public ImagesBodyAdapter(Context context){
this.context = context;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
LayoutInflater inflater = LayoutInflater.from(context);
View view = inflater.inflate(R.layout.image_body_item,viewGroup,false);
return new ViewHolderItemDetail(view);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
//ViewHolderItemDetail holder = (ViewHolderItemDetail) viewHolder;
Log.d("adapter","recycler binded!");
for (int counter=0; counter<PATHS.length; counter++)
{
File imageFile = new File(PATHS[i]);
if(imageFile.exists()) {
((ViewHolderItemDetail) viewHolder).imageBody.setImageBitmap(BitmapFactory.decodeFile(imageFile.getAbsolutePath()));
}
}
}
public void addItems(String[] paths){
for (int i=0; i<paths.length;i++){
this.PATHS[i] = paths[i];
notifyItemChanged(i);
// notifyDataSetChanged();
}
}
private class ViewHolderItemDetail extends RecyclerView.ViewHolder{
ImageView imageBody;
ViewHolderItemDetail(View v) {
super(v);
imageBody = v.findViewById(R.id.imageBody);
}
}
thanks