我有两个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 :(得分:1)
我刚刚删除了&#34;静态&#34;在
中声明我的ArrayList时private static ArrayList<mItemsHolder> arrayList;