Я использую Recyclerview, чтобы создать свою собственную галерею
Это работа, но не полностью, как я хочу.
есть результат моего кода:
Я бы хотел получить такой результат:
есть мой MainActivity.java:
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private RecyclerView.LayoutManager layoutManager;
private String[] list ;
private RecyclerAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)
{
ActivityCompat.requestPermissions(this,new String[]{
Manifest.permission.READ_EXTERNAL_STORAGE
},200);
return;
}
list = new String[new File(Environment.getExternalStorageDirectory() + File.separator + "folderName").list().length];
recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
layoutManager = new GridLayoutManager(this, 3);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setHasFixedSize(true);
getPictureList();
}
private void getPictureList() {
File[] files = new File(Environment.getExternalStorageDirectory() + File.separator + "folderName").listFiles();
for (int i = 0; i < files.length; i++){
list[i] = files[i].getAbsolutePath();
}
Collections.sort(Arrays.asList(list));
Collections.reverse(Arrays.asList(list));
adapter = new RecyclerAdapter(list);
recyclerView.setAdapter(adapter);
}
}
теперь есть мой адаптер Recyclerview:
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.MyViewHolder> {
private String[] list;
public RecyclerAdapter(String[] list){
this.list = list;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
ImageView imageView = (ImageView) LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.image_view_layout, viewGroup, false);
imageView.setAdjustViewBounds(true);
imageView.setPadding(10, 10, 10, 10);
MyViewHolder myViewHolder = new MyViewHolder(imageView);
return myViewHolder;
}
@Override
public void onBindViewHolder(@NonNull final MyViewHolder viewHolder, final int i) {
Bitmap ThumbImage = ThumbnailUtils.extractThumbnail(BitmapFactory.decodeFile(list[i]), 150, 150);
viewHolder.imageView.setImageBitmap(ThumbImage);
viewHolder.imageView.setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), PreviewPicture.class);
intent.putExtra("fileName", list[i]);
v.getContext().startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return list.length;
}
public static class MyViewHolder extends RecyclerView.ViewHolder{
ImageView imageView;
public MyViewHolder(@NonNull ImageView itemView) {
super(itemView);
imageView = itemView;
}
}
}
И мой image_view_layout:
<?xml version="1.0" encoding="utf-8"?>
<ImageView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ImageView>
Результат - мое первое изображение.
Примечание:
Мои имена изображений: picture_TIMESTAMP.jpg
и для каждой даты я хотел бы сделать раздел как настоящая галерея в телефоне
спасибо!