1
我想用不同的佈局(2佈局)編寫ListView CursorAdapter。 我覆蓋了newView
和bindView
方法。在具有相同佈局的頁面中,它們工作正確,但是在具有混合應用程序崩潰的頁面中。 發生這種情況是因爲bindView
目前收到list_item_depart
類型的視圖,此時必須接收list_item_person
。 (第2次膨脹list_item_depart
和所有的罰款,但三要素是list_item_person
和應用程序崩潰Android光標適配器不同的佈局
我的代碼:
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View view;
ViewHolder holder = new ViewHolder();
if (getItemViewType(cursor) == ContactsDatabaseHelper.TYPE_DEPARTMENT) {
view = mInflater.inflate(R.layout.list_item_depart, parent, false);
holder.tvTitle = (TextView) view.findViewById(R.id.tvTitle);
holder.ivFolder = (ImageView) view.findViewById(R.id.ivFolder);
} else {
view = mInflater.inflate(R.layout.list_item_person, parent, false);
holder.tvName = (TextView) view.findViewById(R.id.tvName);
holder.tvPost = (TextView) view.findViewById(R.id.tvPost);
}
view.setTag(holder);
return view;
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
ViewHolder holder = (ViewHolder) view.getTag();
if (getItemViewType(cursor) == ContactsDatabaseHelper.TYPE_DEPARTMENT) {
int id = cursor.getInt(cursor.getColumnIndex(ContactsDatabaseHelper.DEPART_ID));
// Department title
holder.tvTitle.setText(cursor.getString(cursor.getColumnIndex(ContactsDatabaseHelper.DEPART_NAME)));
// Folder icon
if (ch.getChildDepartsCountById(id) > 0) {
holder.ivFolder.setVisibility(View.VISIBLE);
} else {
holder.ivFolder.setVisibility(View.GONE);
}
} else {
// Worker name
holder.tvName.setText(cursor.getString(cursor.getColumnIndex(ContactsDatabaseHelper.EMPLOYEE_NAME)));
// Worker post
holder.tvPost.setText(cursor.getString(cursor.getColumnIndex(ContactsDatabaseHelper.EMPLOYEE_TITLE)));
}
}
請幫忙,對不起我的英語(感謝谷歌翻譯)
您可以幫助類似的問題類型 http://stackoverflow.com/questions/8479833/cursoradapter-with-different-row-layouts – bond007