我想用Base Adapter填充2个不同大小的arraylist:
请建议,提前致谢。
这是我的活动:
name.add("aestro");
name.add("blender");
name.add("cup_cake");
img.add(R.drawable.nougat);
img.add(R.drawable.marshmallow);
listView.setAdapter(new My_ada(MainActivity.this,name,img));
我正在尝试设置数据的适配器部分:
view_holder.textView.setText(Name.get(i));
if(Img.size()<Name.size()){
for(int x=0;x<Name.size();x++){
view_holder.textView.setText(Name.get(i));
}
}
答案 0 :(得分:0)
创建对象的Arraylist而不是两个单独的列表。
class Holder{
private int image1 // integer if it is drawable image
private int image2
.... // add all things
}
在arraylist中使用此类的对象并使用它。
Arraylist<Holder> holders = new Arraylist<>();
希望这会有所帮助。
答案 1 :(得分:0)
你为什么这样做?你只需要一个arraylist。
你可以像这样创建一个类。
class Person {
String word, image;
public Person(String word, String image) {
this.word = word;
this.image = image;
}
public String getWord() {
return this.word;
}
public String getImage() {
return this.image;
}
}
之后,你可以做一些这样的代码
ArrayList<Person> listPerson = new ArrayList<Person> ();
listPerson.add(new Person("word1", "image1"));
listPerson.add(new Person("word1", "image2"));
listPerson.add(new Person("word2", "image2"));
listPerson.add(new Person("word3", "image1"));
for (int i = 0; i < listPerson.size(); i++) {
System.out.println("WORD -> " + listPerson.get(i).getWord() + " IMAGE -> " + listPerson.get(i).getImage());
}
最后,你的输出将是....
WORD -> word1 IMAGE -> image1
WORD -> word1 IMAGE -> image2
WORD -> word2 IMAGE -> image2
WORD -> word3 IMAGE -> image1
这将允许您控制单词和图像。因此word1对于image1和image2可以是相同的。等等
如果你把它放到列表视图或网格视图中,它们会很好地结合在一起。不要过度思考这一部分。 :)
答案 2 :(得分:0)
因此,对于您提供的Json,您可以制作一个对象,或者您可以制作两个arraylist。我正在为两个arraylist发布解决方案
public class CustomAdapter extends RecyclerView.Adapter {
private View view;
Context context;
ArrayList<String> names;
ArrayList<String> images;
public CustomAdapter (Context context, ArrayList<String> names, ArrayList<String> img) {
this.context=context;
names=names;
// make images equals to names
for (int i = names.size()-1; i >=0; i--) {
String a=imgs.get(names%imgs);
images.add(a)
}
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
view= LayoutInflater.from(parent.getContext()).inflate(R.layout.child_list,parent,false);
return new CustomViewHolder(view);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
final CustomViewHolder= (CustomViewHolder) holder;
viewHolder.tvTitle.setText(names.get(position));
Glide.with(context)
.load(images.get(positon))
.asBitmap()
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.placeholder(R.drawable.default_user)
.into(viewHolder.ivImage);
}
@Override
public int getItemCount() {
return names.size();
}
private class CustomViewHolder extends RecyclerView.ViewHolder {
TextView tvTitle;
ImageView ivImage;
public CustomViewHolder(View itemView) {
super(itemView);
tvTitle=(TextView)itemView.findViewById(R.id.tv_title);
ivImage=(ImageView)itemView.findViewById(R.id.iv_img);
}
}
}
我希望这会有效,如果你对Glide有疑问,请告诉我。