用于图库的自定义适配器

时间:2011-04-11 15:43:34

标签: android gallery adapter

我在为Gallery上的项目编写自定义适配器时遇到了问题。我按照Android开发者网站上的步骤,但不是返回ImageView我返回一个TextView。但是,当我尝试运行应用程序时,在尝试将子项添加到Gallery时会出现ClassCastException。

但是,如果我使用基本的字符串适配器,它可以工作,如果我使用ImageView,它也可以工作。自方法

以来我没有遇到问题
@Override
public View getView(int position, View convertView, ViewGroup parent)

返回一个View,它是ImageView和TextView的基类。所以我不会错。你知道这个问题的原因是什么吗?

非常感谢

这是适配器的代码,

public class HistoryIndexAdapter extends BaseAdapter {

private Context context;
private ArrayList<History> historyIndex;
private Typeface typeface;

public HistoryIndexAdapter(Context context, ArrayList<History> historyItems) {

    this.context = context;
    this.historyIndex = historyItems;    
    this.typeface = Typeface.createFromAsset(context.getAssets(), context.getString(R.string.font));
}

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

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

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {


    TextView item = new TextView(context);


    item.setText(historyIndex.get(position).getDate());
    item.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    item.setTypeface(typeface);
    item.setTextColor(R.color.white);

    return item;
}

}

1 个答案:

答案 0 :(得分:0)

您使用的完全限定的LayoutParams类是什么?您需要使用Gallery.LayoutParams。如果不这样做,您将获得ClassCastException。