Задать вопрос
@DarkByte2015

Почему возникает ошибка?

Подскажите пожалуйста почему при вызове getItemAtPosition падает OutOfBounds? Дебажил, getCount - возвращает 4 как и должно быть, position переданная тоже нормальная - индекс того элемента по которому тыкаю. В чем проблема?

spoiler

В MainActivity.onCreate
final ArrayList<DateTime> dates = new ArrayList<>();

dates.add(new DateTime(2017, 1, 1, 0, 0));
dates.add(new DateTime(2016, 1, 1, 0, 0));
dates.add(new DateTime(2015, 1, 1, 0, 0));
dates.add(new DateTime(2014, 1, 1, 0, 0));

DatesAdapter adapter = new DatesAdapter(this, R.layout.date_item, dates);

datesList.setAdapter(adapter); // ListView

datesList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Object item = datesList.getItemAtPosition(position); // ERROR!!!
    }
});

адаптер
public class DatesAdapter extends ArrayAdapter<DateTime> {
    private LayoutInflater inflater;
    private int layout;
    private ArrayList<DateTime> datesList;

    public DatesAdapter(@NonNull Context context, @LayoutRes int resource, ArrayList<DateTime> datesList) {
        super(context, resource);

        this.inflater = LayoutInflater.from(context);
        this.layout = resource;
        this.datesList = datesList;
    }

    @Override
    public @NonNull View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        final ViewHolder viewHolder;

        if (convertView == null) {
            convertView = inflater.inflate(this.layout, parent, false);
            viewHolder = new ViewHolder(convertView);
            convertView.setTag(viewHolder);
        }
        else {
            viewHolder = (ViewHolder)convertView.getTag();
        }

        viewHolder.date.setText(datesList.get(position).toString("dd.MM.yyyy"));

        return convertView;
    }

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

    private class ViewHolder {
        final TextView date;

        ViewHolder(View view){
            date = (TextView)view.findViewById(R.id.date);
        }
    }
}

  • Вопрос задан
  • 323 просмотра
Подписаться 1 Оценить 12 комментариев
Пригласить эксперта
Ответы на вопрос 1
Мб попробовать position-1?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы