Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将不同的图像放入回收器视图中的每个卡片视图中?_Java_Android - Fatal编程技术网

Java 如何将不同的图像放入回收器视图中的每个卡片视图中?

Java 如何将不同的图像放入回收器视图中的每个卡片视图中?,java,android,Java,Android,因此,我希望将图像添加到我的项目中。现在,我能够在RecyclerView中显示每个CardView的文字。但是,对于图片,我不能这样做。我尝试添加数据类型为ImageView/Drawable的listImage,但仍然不起作用(虽然它对listData起作用,但其数据类型为string)。 以下是我的RecyclerAdapter中的代码: class RecyclerViewHolder extends RecyclerView.ViewHolder implements View.OnC

因此,我希望将图像添加到我的项目中。现在,我能够在RecyclerView中显示每个CardView的文字。但是,对于图片,我不能这样做。我尝试添加数据类型为ImageView/Drawable的listImage,但仍然不起作用(虽然它对listData起作用,但其数据类型为string)。 以下是我的RecyclerAdapter中的代码:

class RecyclerViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener{

public TextView txtDesc;
public ImageView imgView;
private ItemClickListener itemClickListener;

public RecyclerViewHolder(@NonNull View itemView) {
    super(itemView);
    txtDesc = (TextView)itemView.findViewById(R.id.foodcourtdesc);
    imgView = (ImageView)itemView.findViewById(R.id.foodcourtimg);
    itemView.setOnClickListener(this);
    itemView.setOnLongClickListener(this);
    }
}

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerViewHolder>{

private List<String> listData = new ArrayList<>();
private Context context;

public RecyclerAdapter(List<String> listData, Context context) {
    this.listData = listData;
    this.context = context;
}

@Override
public RecyclerViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    LayoutInflater inflater = LayoutInflater.from(parent.getContext());
    View itemView = inflater.inflate(R.layout.foodcourt, parent, false);

    return new RecyclerViewHolder(itemView);
}

@Override
public void onBindViewHolder(@NonNull RecyclerViewHolder holder, int position) {
    holder.txtDesc.setText(listData.get(position));

    holder.setItemClickListener(new ItemClickListener() {
        @Override
        public void onClick(View view, int position, boolean isLongClick) {
            if(isLongClick){
                Toast.makeText(context, listData.get(position) + " chosen!", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(context, listData.get(position) + " chosen!", Toast.LENGTH_SHORT).show();
            }
        }
    });
}
类RecycleServiceWholder扩展了RecycleView.ViewHolder实现了View.OnClickListener、View.OnLongClickListener{
公共文本视图txtDesc;
公共图像视图imgView;
私有项ClickListener项ClickListener;
公共RecycleServiceWholder(@NonNull View itemView){
超级(项目视图);
txtDesc=(TextView)itemView.findViewById(R.id.foodcourtdesc);
imgView=(ImageView)itemView.findViewById(R.id.foodcourtimg);
setOnClickListener(这个);
setOnLongClickListener(此);
}
}
公共类RecyclerAdapter扩展了RecyclerView.Adapter{
private List listData=new ArrayList();
私人语境;
公共回收器适配器(列表数据、上下文){
this.listData=listData;
this.context=上下文;
}
@凌驾
public RecycleServiceWholder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){
LayoutInflater充气器=LayoutInflater.from(parent.getContext());
视图项视图=充气机。充气(R.layout.foodcourt,父项,false);
返回新的RecycleServiceWholder(itemView);
}
@凌驾
BindViewHolder上的公共void(@NonNull RecycleServiceWholder holder,int位置){
holder.txtDesc.setText(listData.get(position));
setItemClickListener(新的ItemClickListener(){
@凌驾
公共void onClick(视图、int位置、布尔值isLongClick){
如果(单击){
Toast.makeText(上下文,listData.get(position)+“selected!”,Toast.LENGTH_SHORT.show();
}否则{
Toast.makeText(上下文,listData.get(position)+“selected!”,Toast.LENGTH_SHORT.show();
}
}
});
}
这是我插入数据时的代码

RecyclerView recyclerView = (RecyclerView)findViewById(R.id.recycler_foodcourt);
    recyclerView.setHasFixedSize(true);
    layoutManager = new GridLayoutManager(this, 2);
    recyclerView.setLayoutManager(layoutManager);

    adapter = new RecyclerAdapter(listData, this);
    recyclerView.setAdapter(adapter);

for (int i = 1; i <= 6; i++){
        listData.add("Foodcourt " + i);
    }
RecyclerView RecyclerView=(RecyclerView)findViewById(R.id.recycler\u foodcourt);
recyclerView.setHasFixedSize(true);
layoutManager=新的GridLayoutManager(这个,2);
recyclerView.setLayoutManager(layoutManager);
适配器=新的RecyclerAdapter(listData,此);
recyclerView.setAdapter(适配器);

对于(int i=1;i
列表数据
应包含不同
URL的
图像
,以在
列表视图
的不同卡上显示不同的
图像
,循环代码不在正确位置。将数据传递到构造函数后,您正在将其添加到列表中。下面是修复该问题的代码:

RecyclerView recyclerView = (RecyclerView)findViewById(R.id.recycler_foodcourt);
    recyclerView.setHasFixedSize(true);
    layoutManager = new GridLayoutManager(this, 2);
    recyclerView.setLayoutManager(layoutManager);

for (int i = 1; i <= 6; i++){
        listData.add("Foodcourt " + i);
    }

    adapter = new RecyclerAdapter(listData, this);
    recyclerView.setAdapter(adapter);
RecyclerView RecyclerView=(RecyclerView)findViewById(R.id.recycler\u foodcourt);
recyclerView.setHasFixedSize(true);
layoutManager=新的GridLayoutManager(这个,2);
recyclerView.setLayoutManager(layoutManager);

对于(int i=1;i如果图像来自drawable,则写下:

Integer[] images = new Integer[]{R.drawable.image1, R.drawable.image2....}; // Provide 6 Images or it will crash saying null pointer exception
ArrayList<Integer> loadImage = new ArrayList<>();
然后,在适配器中创建一个Arraylist,如下所示:

ArrayList<Integer> Images = new ArrayList<>();

就是这样..应该在recyclerview的每个项目中显示图像..试试..

图像实际上来自我的可绘制文件夹即使我要添加它们,我如何获取图像?int[]myImageList=new int[]{R.drawable.image1,R.drawable.image2};为了更好地理解,您也可以点击此链接:它起到了作用,但还是要感谢您的帮助。但是如何向每个项目添加图像?不显示任何内容:(不,我已经共享了用于代码共享的pastebin链接。这张截图应该是来自服务器的图像,或者您的绘图表中有它?@UmanBurman这是我自己的绘图表。请查看我的答案。我已经发布了除holder.imgView.setImageDrawable(images.get(position))之外的所有内容看起来都很好;它表示不能将ImageView中的setImageDrawable应用于(java.lang.Integer)好的,我已经更新了答案。请检查最后一行。我已经做了更改,在代码中似乎没有任何错误,但是当我运行它时,它崩溃了。在您给出的第四和第五个代码中,有ArrayList和List,我对其进行了更改,因为数据类型不一致。但是,它仍然不起作用。您从draw中添加了多达6个文件吗能行?logcat中的错误说明了什么?好的,你好,更新。非常感谢。它现在可以工作了。就是这个小混蛋“loadImage.add(images[i]);”,没有第6位,只有0到第5位哈哈。无论如何,非常感谢。
adapter = new RecyclerAdapter(listData, loadImage, this);
recyclerView.setAdapter(adapter);
ArrayList<Integer> Images = new ArrayList<>();
public RecyclerAdapter(List<String> listData, List<Integer> listImages, Context context) { 
   this.listData = listData;
   this.Images = listImages;
   this.context = context;
}
 holder.imgView.setImageDrawable(ContextCompat.getDrawable(context, Images.get(position)));