Android listviews의 효율성을 극대화하려면 화면에 맞추기 위해 필요한만큼 많은 '행'보기 만 있어야한다는 것을 알았습니다. 보기가 화면에서 벗어나면 convertView
이 null인지 아닌지 확인하면서 getView
메소드에서보기를 다시 사용해야합니다.두 개의 다른 레이아웃으로 Android Listview에서보기 재사용
그러나 목록에 2 가지 레이아웃이 필요할 때 어떻게이 아이디어를 구현할 수 있습니까? 주문 및 1 개의 레이아웃 목록은 완료 주문에 대한 것이고 다른 레이아웃은 프로세스 주문에 대한 것입니다.
이것은 내 코드에서 사용하는 아이디어의 예제 튜토리얼입니다. 내 경우, 나는 2 열 레이아웃을 것이다 : R.layout.listview_item_product_complete
및 R.layout.listview_item_product_inprocess
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
holder = new ViewHolder();
if(getItemViewType(position) == COMPLETE_TYPE_INDEX) {
convertView = mInflator.inflate(R.layout.listview_item_product_complete, null);
holder.mNameTextView = (TextView) convertView.findViewById(R.list.text_complete);
holder.mImgImageView = (ImageView) convertView.findViewById(R.list.img_complete);
}
else { // must be INPROCESS_TYPE_INDEX
convertView = mInflator.inflate(R.layout.listview_item_product_inprocess, null);
holder.mNameTextView = (TextView) convertView.findViewById(R.list.text_inprocess);
holder.mImgImageView = (ImageView) convertView.findViewById(R.list.img_inprocess);
}
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
thisOrder = (Order) myOrders.getOrderList().get(position);
// If using different views for each type, use an if statement to test for type, like above
holder.mNameTextView.setText(thisOrder.getNameValue());
holder.mImgImageView.setImageResource(thisOrder.getIconValue());
return convertView;
}
public static class ViewHolder {
public TextView mNameTextView;
public ImageView mImgImageView;
}
최근에 직접이 문제가 발생했습니다. 나는 listview를 채우기 위해 2 개의 다른 레이아웃을 사용하고 있었고 완전한 무정부 상태가되었습니다. 내 코드를 반복해서 읽었지만 잘못된 레이아웃이 다시 사용되는 이유를 찾지 못했습니다. 결국, 목록 당 * * 레이아웃 하나만 사용하기로 결정했지만 항목 유형에 따라보기를 크게 수정했습니다. 코드에서 항목을 편집 할 수있는 많은 방법이 있습니다. –