Как добавить заголовок в раздел в программе RecyclelerView Android? - PullRequest
2 голосов
/ 03 мая 2019

Я использую Recyclerview, чтобы создать свою собственную галерею Это работа, но не полностью, как я хочу.

есть результат моего кода:

picture withou headers

Я бы хотел получить такой результат:

picture with headers

есть мой 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

и для каждой даты я хотел бы сделать раздел как настоящая галерея в телефоне

спасибо!

1 Ответ

0 голосов
/ 03 мая 2019

Создайте еще одно представление переработчика с новым адаптером и макетом, содержащим фактическое представление переработчика и текстовое поле поверх него (ваша основная деятельность превращается в новый просмотр переработчика, содержащий фактическое), затем вам нужно будет отсортировать изображения по датеи поместите правильный список в каждый суб-реселлер ViewView

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...