1

私は2つのListViewを持っていますが、2番目のビュー項目は、最初のユーザーが最初のListViewで選択したものに応じて変化します

最初にユーザーが最初のリストからアイテムを選択すると、2番目のListViewは問題なくロードされます...しかし、最初のListViewに戻って別のアイテムを選択すると、2番目のListViewは不正な状態の例外を出します...

また、setListAdapterの前後に通知するのは意味がないため、DataSetChangesについてListViewに通知するタイミングがわかりません。

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;
}
}
4

1 に答える 1

1

でArrayListを宣言するときに、「静的」を削除しました

private static ArrayList<mItemsHolder> arrayList;
于 2012-05-11T14:56:28.897 に答える