2012-05-08 44 views
1

我有兩個列表視圖,第二視圖中的項目更改根據什麼第一用戶選擇在第一的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; 
} 
} 
+0

當我回去時ArrayList中刪除 「靜態」,第二個列表的活動必須予以銷燬;爲什麼在重新創建系統時認爲數據集已經改變? – Hadi

+0

添加了custome ListAdapter類似乎是問題...任何想法是怎麼回事?! – Hadi

回答

1

我只是說出我在

private static ArrayList<mItemsHolder> arrayList; 
+0

非常感謝你的回答我通過刪除**靜態**解決了問題 –

相關問題