gpt4 book ai didi

java - 创建 ListView 适配器时出现错误

转载 作者:行者123 更新时间:2023-11-29 23:13:31 27 4
gpt4 key购买 nike

我会根据我的 api json 响应创建一些 ListView ,但我在代码中遇到了这个 LinkedTreeMap 错误。谁能帮我解决这个问题?

public class KategoriListAdapter extends BaseAdapter {

Context context;
ArrayList<Barang> barang;

public KategoriListAdapter(Context context, ArrayList<Barang> barang) {
this.context = context;
this.barang = barang;
}

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

@Override
public Barang getItem(int i) {
return this.barang.get(i);
}

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

@TargetApi(Build.VERSION_CODES.KITKAT)
@Override
public View getView(final int i, View view, ViewGroup viewGroup) {
if (view == null) {
view = LayoutInflater.from(context).inflate(R.layout.custom_list_view_kategori, viewGroup, false);
}

TextView tvNama = (TextView) view.findViewById(R.id.tv_nama);
TextView tvHarga = (TextView) view.findViewById(R.id.tv_harga);
TextView tvUsername = (TextView) view.findViewById(R.id.tv_username);


Object getrow = this.barang.get(i);
LinkedTreeMap<Object, Object> rowmap = (LinkedTreeMap) getrow;
String nama = rowmap.get("nama").toString();
String harga = rowmap.get("harga").toString();
String username = rowmap.get("username").toString();

tvNama.setText(nama);
tvHarga.setText(harga);
tvUsername.setText(username);

return view;
}

}

public class Barang {

@SerializedName("id")
@Expose
private Integer id;
@SerializedName("username")
@Expose
private String username;
@SerializedName("nama")
@Expose
private String nama;
@SerializedName("harga")
@Expose
private String harga;
@SerializedName("gambar")
@Expose
private String gambar;

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getNama() {
return nama;
}

public void setNama(String nama) {
this.nama = nama;
}

public String getHarga() {
return harga;
}

public void setHarga(String harga) {
this.harga = harga;
}

public String getGambar() {
return gambar;
}

public void setGambar(String gambar) {
this.gambar = gambar;
}

}

我运行 Activity 时的日志结果是

java.lang.ClassCastException: com.example.barangkoz.model.Barang cannot be 
cast to com.google.gson.internal.LinkedTreeMap
at com.example.barangkoz.activities.KategoriListAdapter.getView(KategoriListAdapter.java:57)`

最佳答案

您在适配器构造函数中传递了“Barang”对象的 ArrayList,这意味着您的适配器中已经有一个对象 Barang 列表,您可以直接使用它而无需转换为 TreeMap。

在适配器的 getView 方法中更改此

Object getrow = this.barang.get(i);

Barang barang = barang.get(i);

它会给出 Barang 列表中 i 位置的 Barang 对象。您可以像这样使用对象 Barang 内定义的 getter 方法从该对象获取数据。

String harga = barang.getHarga();
String nama = barang.getNama();
String userName = barang.getUsername();

并将其设置为您的 TextView 或

您可以直接从 Barang 对象将数据设置到 TextView(在设置到 TextView 之前无需执行额外的步骤将其设置到变量中),就像这样

tvHarga.setText(barang.getHarga());
tvNama.setText(barang.getNama());
tvUsername.setText(barang.getUsername());

关于java - 创建 ListView 适配器时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55688455/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com