所以这是我的自定义适配器中的列表。我被卡住了“getItem”函数并且由于错误而没有运行getView函数
“不兼容的类型:
必需:in.paperbind.app.shopping
实际:java.lang。对象
我无法理解为什么会发生此错误。有人可以帮帮我吗?
public class productAdapter extends BaseAdapter{
private LayoutInflater mInflater;
private List items = new ArrayList();
public productAdapter(Context context, List items)
{
mInflater = LayoutInflater.from(context);
this.items = items;
}
public products getItem(int position)
{
return items.get(position);
}
public long getItemID(int position)
{
return position;
}
public View getView(int position, View convertView,ViewGroup parent)
{
ViewHolder holder;
products p = items.get(position);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_single, null);
holder = new ViewHolder();
holder.name = (TextView) convertView.findViewById(R.id.txt);
holder.pic = (ImageView) convertView.findViewById(R.id.img);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.name.setText(p.getName());
if (p.getImage() != null) {
holder.pic.setImageBitmap(p.getImage());
} else {
// MY DEFAULT IMAGE
holder.pic.setImageResource(R.drawable.grocerybag);
}
return convertView;
}
static class ViewHolder
{
TextView name;
ImageView pic;
}
}
答案 0 :(得分:1)
将您的列表定义为:
private List<products> items = new ArrayList<products>();
答案 1 :(得分:0)
您正在使用通用列表,这意味着您没有定义列表中存储的对象类型,因此Java假设您的所有项都是Object
s(所有对象的最小公分母) )。
将列表实例化更改为以下行:
private List<Shopping> items = new ArrayList<Shopping>();
并相应地更改其余代码。这有助于解决您的问题。 不要像这里建议的那样使用显式转换 - 这将覆盖Java的类型检查,并确保在未来发生问题。
答案 2 :(得分:-2)
您的列表包含Object
个实例,您的getItem(int position)
方法应返回products
个实例。
像这样添加演员products
实例:
public products getItem(int position)
{
return (products) items.get(position);
}
Object
class是Java中的超类对象,它处理基本的内存分配操作,所有类(隐式或显式)扩展该类。