Jadi saya punya masalah ini sebelumnya, dan tentu saja saya meminta bantuan di sini . Jawaban Luksprog luar biasa karena saya tidak tahu tentang bagaimana ListView dan GridView dioptimalkan sendiri dengan daur ulang Tampilan. Jadi dengan sarannya saya bisa mengubah cara saya menambahkan Tampilan ke GridView saya. Masalahnya sekarang saya punya sesuatu yang tidak masuk akal. Ini milik getView
saya 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;
}
}
Masalahnya adalah ketika saya menggulir, ini terjadi, dan bukan pada posisi 0 ... Sepertinya posisi 6 dan posisi 8, ditambah menempatkan dua di posisi 8. Sekarang saya masih mencoba untuk menggunakan ListView dan GridView jadi saya lakukan tidak mengerti mengapa ini terjadi. Salah satu alasan utama saya mengajukan pertanyaan ini adalah untuk membantu orang lain yang mungkin tidak tahu tentang daur ulang ListView dan GridView, atau cara artikel ini mengatakannya, mekanisme ScrapView.
Kemudian Edit
Menambahkan tautan ke Google IO talk yang pada dasarnya adalah semua yang Anda butuhkan untuk memahami cara kerja ListView. Tautan mati di salah satu komentar. Jadi user3427079 cukup bagus untuk memperbarui tautan itu. Ini untuk akses mudah.
0
).
ListView
baris baru perlu ditampilkan (seperti melanjutkan untuk menggulir ke bawah / atas). Masalahnya adalah bahwa pandangan yang baru saja menghilang dan yang akan digunakan pada posisi yang dibutuhkan di masa depan TextView
telah ditambahkan ke dalamnya, inilah masalahnya. Untuk mengatasinya Anda harus menghapusnya dalam getView
metode jika getView
metode dipanggil untuk posisi lain selain 0
.