Тож у мене ця проблема була в мене раніше, і я, природно, попросив допомоги тут . Відповідь Luksprog була чудовою, тому що я не мав уявлення про те, як ListView та GridView оптимізували себе за допомогою переробки 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 щодо переробки перегляду, або про те, як ця стаття ставить це, ScrapView.
Пізніше Редагувати
Додавання посилання в розмову в Google IO, це в основному все, що вам потрібно, щоб зрозуміти, як працює ListView. Посилання на коментарі померло. Тож користувачеві3427079 було досить приємно оновити це посилання. Ось це для легкого доступу.
0
).
ListView
потрібен новий рядок для показу (наприклад, продовження прокрутки вниз / вгору). Проблема полягає в тому, що погляд, який щойно зник і який буде використовуватися на майбутніх необхідних посадах, TextView
вже додав до цього, в цьому і полягає проблема. Щоб вирішити його, вам потрібно видалити його в getView
методі, якщо getView
метод викликається в будь-якій іншій позиції, ніж 0
.