gpt4 book ai didi

android - 将项目添加到 ListAdapter 会导致异常

转载 作者:行者123 更新时间:2023-11-29 02:17:11 25 4
gpt4 key购买 nike

我正在尝试使用 ListView ,当我将一个项目添加到其 ListAdapter 的 ArrayList 并调用 notifyDataSetChanged 时,它会抛出异常。调用下面的 addItem 例程将引发异常。

消息显示未找到源,然后是://从 DataSetObservable.java 编译而来(版本 1.5:49.0,超位)//签名:Landroid/database/Observable;公共(public)类 android.database.DataSetObservable 扩展了 android.database.Observable {

//方法描述符 #8 ()V //栈:3,局部:1 公共(public) DataSetObservable(); 0 aload_0 [这个] 1 调用特殊的 android.database.Observable() [1] 4 新的 java.lang.RuntimeException [2] 7双 8 最不发达国家 [3] 10 调用特殊的 java.lang.RuntimeException(java.lang.String) [4] 13 throw 行号: [个人计算机:0,行:5] 局部变量表: [pc: 0, pc: 14] local: this index: 0 type: android.database.DataSetObservable

我的初始化代码:

    tickerList = (ListView)findViewById(R.id.ListView01);
tickerModel = new StockAdapter(stocks);
tickerList.setAdapter(tickerModel);

我已经包含了我的自定义适配器类。 (根据在线示例修改)

private class StockAdapter extends BaseAdapter {

private ArrayList <Stockdata>mData = new ArrayList<Stockdata>();
private LayoutInflater mInflater;

public StockAdapter(ArrayList<Stockdata>rows) {
mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mData = rows;
}

public void addItem(Stockdata item) {
mData.add(item);
notifyDataSetChanged();
}

@Override
public int getCount() {
return mData.size();
}

@Override
public Stockdata getItem(int position) {
return mData.get(position);
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
System.out.println("getView " + position + " " + convertView);
ViewHolder holder = null;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.row, null);
holder = new ViewHolder();
holder.textView = (TextView)convertView.findViewById(R.id.SYMBOL_CELL);
convertView.setTag(holder);
} else {
holder = (ViewHolder)convertView.getTag();
}
holder.textView.setText(mData.get(position).getSymbol());
return convertView;
}

}

public static class ViewHolder {
public TextView textView;
}

最佳答案

问题是我从 UI 线程外部调用 notifyDataSetChanged。

这解决了问题。

runOnUiThread(新的 Runnable(){ 公共(public)无效运行(){ tickerModel.notifyDataSetChanged(); }});

谢谢,格里

关于android - 将项目添加到 ListAdapter 会导致异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2685305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com