如何在recyclerview android中向节添加标题?

如何在recyclerview android中向节添加标题?,android,android-recyclerview,Android,Android Recyclerview,我用Recyclerview制作自己的画廊 这是工作,但并不完全像我想要的那样 下面是我的代码的结果: 我想得出以下结果: 下面是我的MainActivity.java: public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView; private RecyclerView.LayoutManager layoutManager; private St

我用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);
    }
}
public类MainActivity扩展了AppCompatActivity{
私人回收站;
private RecyclerView.LayoutManager LayoutManager;
私有字符串[]列表;
专用回收适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(ActivityCompat.checkSelfPermission(this,Manifest.permission.READ\u EXTERNAL\u STORAGE)!=PackageManager.permission\u provided)
{
ActivityCompat.requestPermissions(此,新字符串[]){
Manifest.permission.READ\u外部存储
},200);
返回;
}
列表=新字符串[新文件(Environment.getExternalStorageDirectory()+File.separator+“folderName”).list().length];
recyclerView=(recyclerView)findViewById(R.id.recyclerView);
layoutManager=新的GridLayoutManager(这个,3);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setHasFixedSize(true);
getPictureList();
}
私有void getPictureList(){
File[]files=新文件(Environment.getExternalStorageDirectory()+File.separator+“folderName”).listFiles();
对于(int i=0;i
现在是我的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;
        }
    }
}
公共类RecyclerAdapter扩展了RecyclerView.Adapter{ 私有字符串[]列表; 公共回收适配器(字符串[]列表){ this.list=列表; } @非空 @凌驾 public MyViewHolder onCreateViewHolder(@NonNull ViewGroup ViewGroup,int i){ ImageView ImageView=(ImageView)LayoutFlater.from(viewGroup.getContext())。充气(R.layout.image\u view\u布局,viewGroup,false); imageView.setAdjustViewBounds(true); 设置填充(10,10,10,10); MyViewHolder MyViewHolder=新的MyViewHolder(imageView); 返回myViewHolder; } @凌驾 public void onBindViewHolder(@NonNull final MyViewHolder viewHolder,final int i){ 位图ThumbImage=ThumbnailUtils.extractThumbnail(BitmapFactory.decodeFile(列表[i]),150150); viewHolder.imageView.setImageBitmap(ThumbImage); viewHolder.imageView.setOnClickListener(新视图.OnClickListener(){ @RequiresApi(api=Build.VERSION\u code.LOLLIPOP) @凌驾 公共void onClick(视图v){ Intent Intent=新的Intent(v.getContext(),PreviewPicture.class); intent.putExtra(“文件名”,列表[i]); v、 getContext().startActivity(意图); } }); } @凌驾 public int getItemCount(){ 返回列表长度; } 公共静态类MyViewHolder扩展了RecyclerView.ViewHolder{ 图像视图图像视图; 公共MyViewHolder(@NonNull ImageView itemView){ 超级(项目视图); imageView=itemView; } } }
和我的图像视图布局:

<?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>

结果是m'y的第一张照片

注:

我的图片名是picture_TIMESTAMP.jpg

对于每一次约会,我都想在手机上制作一个真实的画廊


谢谢

创建另一个具有新适配器和布局的recyclerview,其中包含实际的recyclerview,并在其顶部创建一个文本字段(您的主要活动将变成包含实际活动的新recyclerview),然后,您需要按日期对图像进行排序,并将正确的列表放在每个子循环视图上

您需要为每个部分的标题创建一个单独的适配器,检查此项了解更多信息我将尝试,但我已经看到此解决方案我不确定结果,谢谢@Ladd.cMaybe这可以帮助您: