Я столкнулся с проблемой при написании специального адаптера для элементов в галерее. Я следовал инструкциям на сайте разработчика Android, но вместо возврата ImageView я возвращаю TextView. Однако при попытке запустить приложение я получаю 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;
}
}