Vì vậy, tôi có vấn đề này tôi đã có trước đây, và tự nhiên tôi đã yêu cầu giúp đỡ ở đây . Câu trả lời của Luksprog rất hay vì tôi không biết về cách ListView và GridView tự tối ưu hóa với Chế độ xem tái chế. Vì vậy, với lời khuyên của anh ấy, tôi đã có thể thay đổi cách tôi thêm Chế độ xem vào GridView của mình. Vấn đề là bây giờ tôi có một cái gì đó không có ý nghĩa. Đây là của tôi getView
từ 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;
}
}
Vấn đề là khi tôi cuộn, điều này xảy ra, chứ không phải ở vị trí 0 ... Có vẻ như vị trí 6 và vị trí 8, cộng với nó đặt hai vị trí 8. Bây giờ tôi vẫn đang cố gắng sử dụng ListView và GridView. không hiểu tại sao điều này lại xảy ra Một trong những lý do chính mà tôi đưa ra câu hỏi này là để giúp những người khác có thể không biết về Chế độ xem tái chế của ListView và GridView, hoặc cách bài viết này đưa ra, cơ chế ScrapView.
Chỉnh sửa sau
Thêm liên kết vào một cuộc trò chuyện Google IO về cơ bản là tất cả những gì bạn cần để hiểu cách ListView hoạt động. Liên kết đã chết trong các ý kiến. Vì vậy, user3427079 đã đủ tốt để cập nhật liên kết đó. Đây là để dễ dàng truy cập.
0
).
ListView
cần một hàng mới để hiển thị (như tiếp tục cuộn xuống / lên). Vấn đề là quan điểm vừa biến mất và sẽ được sử dụng tại các vị trí cần thiết trong tương lai đã TextView
được thêm vào nó, đây là vấn đề. Để giải quyết nó, bạn phải loại bỏ nó trong getView
phương thức nếu getView
phương thức được gọi cho bất kỳ vị trí nào khác ngoài 0
.