Итак, у меня есть эта проблема, которую я имел раньше, и, естественно, я попросил о помощи здесь. Ответ Luksprog был отличным, потому что я понятия не имел о том, как ListView и GridView оптимизировали себя при переработке Views. Поэтому с его советами я смог изменить, как я добавил Views в свой GridView. Проблема в том, что у меня есть что-то, что не имеет смысла. Это мой getView
из моего BaseAdapter
:
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
convertView = inflater.inflate(R.layout.day_view_item, parent, false);
}
Log.d("DayViewActivity", "Position is: "+position);
((TextView)convertView.findViewById(R.id.day_hour_side)).setText(array[position]);
LinearLayout layout = (LinearLayout)convertView.findViewById(R.id.day_event_layout);
//layout.addView(new EventFrame(parent.getContext()));
TextView create = new TextView(DayViewActivity.this);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0, (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 62, getResources().getDisplayMetrics()), 1.0f);
params.topMargin = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1, getResources().getDisplayMetrics());
params.bottomMargin = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1, getResources().getDisplayMetrics());
create.setLayoutParams(params);
create.setBackgroundColor(Color.BLUE);
create.setText("Test");
//the following is my original LinearLayout.LayoutParams for correctly setting the TextView Height
//new LinearLayout.LayoutParams(0, (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 60, getResources().getDisplayMetrics()), 1.0f)
if(position == 0) {
Log.d("DayViewActivity", "This should only be running when position is 0. The position is: "+position);
layout.addView(create);
}
return convertView;
}
}
Проблема заключается в том, что я прокручиваю, это происходит, а не в позиции 0... Похоже, позиция 6 и позиция 8, плюс она помещает два в позицию 8. Теперь я все еще пытаюсь получить доступ к ListView и GridView поэтому я не понимаю, почему это происходит. Одной из основных причин, почему я задаю этот вопрос, является помощь другим, которые, вероятно, не знают о ListView и GridView recycling View, или о том, как этот article ставит его, механизм ScrapView.
Редактировать позже
Добавление ссылки на беседу Google IO, в основном это все, что вам нужно, чтобы понять, как работает ListView. Ссылка была мертва в комментариях. Поэтому user3427079 был достаточно хорош, чтобы обновить эту ссылку. Здесь это для легкого доступа.