Bu yüzden daha önce yaşadığım bir problemim var ve doğal olarak burada yardım istedim . Luksprog'un cevabı harikaydı çünkü ListView ve GridView'ün geri dönüşüm Görünümleri ile kendisini nasıl optimize ettiği hakkında hiçbir fikrim yoktu. Bu yüzden onun tavsiyesiyle GridView'uma Görünümleri nasıl eklediğimi değiştirebildim. Sorun şu ki, mantıklı olmayan bir şeyim var. Bu getView
benim 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;
}
}
Sorun şu ki, kaydırdığımda, bu oluyor ve konum 0'da değil ... Konum 6 ve konum 8'e benziyor, artı ikisini konum 8'e koyuyor. Şimdi hala ListView ve GridView'u kullanmayı öğrenmeye çalışıyorum, öyle yapıyorum bunun neden olduğunu anlamadım. Bu soruyu yapmamın ana nedenlerinden biri, ListView ve GridView'un geri dönüşüm Görünümü veya bu makalenin anlattığı yol , ScrapView mekanizması hakkında muhtemelen bilmeyenlere yardım etmektir.
Daha Sonra Düzenle
Google IO konuşmasına bağlantı eklemek, temelde ListView'ün nasıl çalıştığını anlamak için ihtiyacınız olan tek şey. Bağlantı, yorumların üzerine çıktı. Yani user3427079 bu bağlantıyı güncelleyecek kadar güzeldi. İşte kolay erişim için.