我有兩個列表視圖,第二視圖中的項目更改根據什麼第一用戶選擇在第一的ListView非法狀態異常:適配器的內容發生了變化,但ListView控件沒有收到通知
當第一用戶從第一個列表中選擇一個項目,第二個ListView加載時沒有問題......但是當返回到第一個ListView時,選擇另一個項目,第二個ListView會給出非法狀態異常......
和我有不知道何時通知ListView關於DataSetChanges,因爲它沒有意義在setListAdapter之前或之後通知它!
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int mIndex = getIntent().getIntExtra("mIndex", 0);
adapter = new mListAdapter(this, getItems(mIndex));
setListAdapter(adapter);
}
更新: 我改變了適配器類和問題就消失了......這是造成錯誤...任何知道什麼是錯了,我的老自定義類?
mListAdapter類
public class mListAdapter extends BaseAdapter {
private static ArrayList<mItemsHolder> arrayList;
private LayoutInflater mInflater;
Context context;
int textSize;
public mListAdapter (Context m_context, ArrayList<mItemsHolder> results, int mTextSize) {
arrayList = results;
mInflater = LayoutInflater.from(m_context);
context = m_context;
textSize = mTextSize;
}
public int getCount() {
return arrayList.size();
}
public Object getItem(int position) {
return arrayList.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.custom_row, null);
holder = new ViewHolder();
holder.mainItem = (TextView) convertView.findViewById(R.id.row_txt_main);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
Typeface typeFace=Typeface.createFromAsset(context.getAssets(),"fonts/verdana.ttf");
holder.mainItem.setText(arrayList.get(position).getMainItem());
holder.mainItem.setTextSize(TypedValue.COMPLEX_UNIT_DIP, textSize);
holder.mainItem.setTypeface(typeFace);
return convertView;
}
static class ViewHolder {
TextView mainItem;
}
}
當我回去時ArrayList中刪除 「靜態」,第二個列表的活動必須予以銷燬;爲什麼在重新創建系統時認爲數據集已經改變? – Hadi
添加了custome ListAdapter類似乎是問題...任何想法是怎麼回事?! – Hadi