使 RecyclerView return 成为 SQLITE 数据库中每个视图中的唯一数组
Making RecyclerView return a unique array in every view from SQLITE database
@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {
MyDB db = new MyDB(mContext);
ArrayList<String> images1=db.getCollection(1); // Returns 2 image URIs in an array
ArrayList<String> images2=db.getCollection(2); // 0 images
ArrayList<String> images3=db.getCollection(3); // 2 images
ArrayList<String> images4=db.getCollection(4); // 10 images
ArrayList<String> images5=db.getCollection(5); // 5 images
ArrayList<String> images6=db.getCollection(6); // 12 images
//Maximum 12 images per collection
我试过:
for(int i=0;i<images1.size();i++){
String path1=images1.get(i);
holder.img1.setImageURI(Uri.parse(path1));
}
for(int j=0;j<images2.size();j++){
String path2=images2.get(i);
holder.img2.setImageURI(Uri.parse(path2));
}
for(int k=0;k<images3.size();k++){
String path3=images3.get(i);
holder.img3.setImageURI(Uri.parse(path3));
}
//Sets each view the same, of course.
如何让 recyclerview 将每个视图分配给 12 张(或更少)图像的不同集合?
由于集合的大小可以增加,是否有另一种方法可以将唯一图像(最多 12 张)放入 RecyclerView 的每个视图中?
在 bindViewHolder 中返回一个位置元素,您可以在其中使用它..首先,您必须获取 12 个 ImageView 并将它们分配到一个 imageView 数组中。让它花 imgs[]
@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {
MyDB db = new MyDB(mContext);
ArrayList<String> images1=db.getCollection(position);
for(int i=0;i<images1.size();i++){
String path1=images1.get(i);
holder.imgs[i].setImageURI(Uri.parse(path1));
}
@override
int getItemCount(){
return 6;
}
在您的回收器视图适配器中设置一个条件。并相应地设置颜色。
像这样
override fun onBindViewHolder(holder: NoteViewHolder, position: Int) {
//
when(noteModel.noteColor){
1 ->
holder.relativeBack.setBackgroundColor(context.resources.getColor(android.R.color.holo_red_light))
2 ->
holder.relativeBack.setBackgroundColor(context.resources.getColor(android.R.color.holo_green_light))
}
}
您可以在此 GitHub project file
中找到示例代码
完整源代码超过 here
@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {
MyDB db = new MyDB(mContext);
ArrayList<String> images1=db.getCollection(1); // Returns 2 image URIs in an array
ArrayList<String> images2=db.getCollection(2); // 0 images
ArrayList<String> images3=db.getCollection(3); // 2 images
ArrayList<String> images4=db.getCollection(4); // 10 images
ArrayList<String> images5=db.getCollection(5); // 5 images
ArrayList<String> images6=db.getCollection(6); // 12 images
//Maximum 12 images per collection
我试过:
for(int i=0;i<images1.size();i++){
String path1=images1.get(i);
holder.img1.setImageURI(Uri.parse(path1));
}
for(int j=0;j<images2.size();j++){
String path2=images2.get(i);
holder.img2.setImageURI(Uri.parse(path2));
}
for(int k=0;k<images3.size();k++){
String path3=images3.get(i);
holder.img3.setImageURI(Uri.parse(path3));
}
//Sets each view the same, of course.
如何让 recyclerview 将每个视图分配给 12 张(或更少)图像的不同集合?
由于集合的大小可以增加,是否有另一种方法可以将唯一图像(最多 12 张)放入 RecyclerView 的每个视图中?
在 bindViewHolder 中返回一个位置元素,您可以在其中使用它..首先,您必须获取 12 个 ImageView 并将它们分配到一个 imageView 数组中。让它花 imgs[]
@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {
MyDB db = new MyDB(mContext);
ArrayList<String> images1=db.getCollection(position);
for(int i=0;i<images1.size();i++){
String path1=images1.get(i);
holder.imgs[i].setImageURI(Uri.parse(path1));
}
@override
int getItemCount(){
return 6;
}
在您的回收器视图适配器中设置一个条件。并相应地设置颜色。
像这样
override fun onBindViewHolder(holder: NoteViewHolder, position: Int) {
//
when(noteModel.noteColor){
1 ->
holder.relativeBack.setBackgroundColor(context.resources.getColor(android.R.color.holo_red_light))
2 ->
holder.relativeBack.setBackgroundColor(context.resources.getColor(android.R.color.holo_green_light))
}
}
您可以在此 GitHub project file
中找到示例代码完整源代码超过 here