我在为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;
}
}
答案 0 :(得分:0)
您使用的完全限定的LayoutParams类是什么?您需要使用Gallery.LayoutParams。如果不这样做,您将获得ClassCastException。