Android'列表',“获取”功能给我错误。

时间:2015-01-14 10:18:02

标签: android arraylist

所以这是我的自定义适配器中的列表。我被卡住了“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;
}

}

3 个答案:

答案 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中的超类对象,它处理基本的内存分配操作,所有类(隐式或显式)扩展该类。