Пользовательский адаптер для галереи

#android #gallery #adapter

#Android #Галерея #адаптер

Вопрос:

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

}

Ответ №1:

Какой полный класс LayoutParams вы используете? Вам нужно использовать галерею.Параметры компоновки. Если вы этого не сделаете, вы получите ClassCastException.

Комментарии:

1. Спасибо, Джеймс, на самом деле это была проблема; импорт был неправильным. Теперь он работает идеально, большое спасибо, я бы не заметил эту ошибку слишком быстро, хехе