You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android新手求助:如何将Category模型的category_image传递至Adapter并修正错误

Android新手问题:Category模型的category_image字段传递至GalleryAdapter报错修复

我是一名Android新手,在尝试将Category模型中的**public String category_image;**字段传递至GalleryAdapter时多次出现错误,希望能修正现有代码中的问题。报错表现为Picasso加载图片时的对象调用错误,以及Adapter视图引用、数据获取逻辑问题。

Category模型代码

import java.io.Serializable;

public class Category implements Serializable {

    public int cid = -1;
    public String category_name;
    public String category_image;
    public String recipes_count;

    public Category(String name, String profession, int photo) {
    }


    public String getItemName() {
        return this.category_name;
    }


    public String category_image() {
        return this.category_image;
    }
}

GalleryAdapter代码

public class GalleryAdapter extends BaseAdapter {
private Context context;

private List<Category>  mensWears;


public GalleryAdapter(Context context, List<Category> mensWears) {
    this.context = context;
    this.mensWears = mensWears;
}

@Override
public int getCount() {
    return mensWears.size();
}

@Override
public Object getItem(int i) {
    return null;
}

@Override
public long getItemId(int i) {
    return 0;
}

@Override
public View getView(int i,View view,ViewGroup viewGroup) {
    final Category mensWear = mensWears.get(i);

    if (view == null) {
        final LayoutInflater layoutInflater = LayoutInflater.from(context);
        view = layoutInflater.inflate(R.layout.custom_gallery_layout, null);
    }
    //For text
    TextView prdId = view.findViewById(R.id.name);
   //        prdId.setText(prdId.toString());
    Picasso.get()
            .load(getApiUrl + "/upload/category/" + mensWears.category_image)
            .placeholder(R.drawable.ic_thumbnail)
            .into(i.category_image);


    prdId.setText(mensWears.get(i).getItemName());


//        //For images
//        final ImageView imageView = view.findViewById(R.id.name);
//        if(!TextUtils.isEmpty(mensWear.getItemName())){
//
////            Picasso.with(context).load(imageUrlFromServer+mensWear.category_image())
 ////                    .into(imageView);

    return view;
}

Adapter布局代码

<?xml version="1.0" encoding="utf-8"?>
   <com.kannada.newspaper.india.utils.SquareFrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/ll_main"
    android:padding="@dimen/nav_header_vertical_spacing"
    android:orientation="vertical">

    <ImageView
        android:background="@drawable/bg_google"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/imageView"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:orientation="vertical">
        <LinearLayout
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:gravity="center"
            android:alpha="1"
            android:orientation="vertical">
            <ImageView
                android:layout_width="60dp"
                android:layout_height="60dp"
                android:layout_gravity="center"
                android:id="@+id/photo"/>
        </LinearLayout>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@color/colorWhite"
            android:textSize="@dimen/primeryText"
            android:fontFamily="@font/sfprodisplayregular"
            android:layout_marginTop="@dimen/margin10"
            android:id="@+id/name"
            android:text="Facebook"/>
    </LinearLayout>

</com.kannada.newspaper.india.utils.SquareFrameLayout>

错误修复步骤

1. 修正Category模型构造方法

当前构造方法未对成员变量赋值,导致category_image等字段始终为null,修改为:

public Category(String category_name, String category_image, int cid) {
    this.category_name = category_name;
    this.category_image = category_image;
    this.cid = cid;
}

(可根据实际业务需求调整参数,确保创建Category对象时能正确初始化所有需要的字段)

2. 修复GalleryAdapter中的Picasso加载逻辑

原代码存在多处对象调用错误,修改为:

// 获取布局中用于显示图片的ImageView
ImageView photoIv = view.findViewById(R.id.photo);

Picasso.get()
        .load(getApiUrl + "/upload/category/" + mensWear.category_image)
        .placeholder(R.drawable.ic_thumbnail)
        .into(photoIv);
  • 注意使用已获取的mensWear对象访问category_image字段,而不是直接操作List集合
  • into()方法需要传入布局中的ImageView控件,而非字符串字段或索引

3. 完善Adapter的基础方法

原getItem()和getItemId()方法不符合BaseAdapter规范,修改为:

@Override
public Object getItem(int i) {
    return mensWears.get(i);
}

@Override
public long getItemId(int i) {
    return i;
}

4. 其他优化

  • 移除代码中无效的注释,保持代码整洁
  • 确保getApiUrl是已定义的有效字符串常量,避免空指针或无效URL问题

内容的提问来源于stack exchange,提问作者atozcodes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 13:03:16