如何在recyclerview android中向节添加标题?
我用Recyclerview制作自己的画廊 这是工作,但并不完全像我想要的那样 下面是我的代码的结果: 我想得出以下结果: 下面是我的MainActivity.java:如何在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
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这可以帮助您: