목록보기를 사용하려고하는데 ListAdapter의 ArrayList에 항목을 추가하고 notifyDataSetChanged를 호출하면 예외가 발생합니다. 아래 addItem 루틴을 호출하면 예외가 발생합니다.ListAdapter에 항목을 추가하면 예외가 발생합니다.
메시지는 소스가 발견되지 말한다 다음이 : DataSetObservable.java (버전 1.5 : 49.0, 슈퍼 비트)에서 컴파일 // // 서명 : Landroid/데이터베이스/관찰 가능한; 3, 주민 : 공용 클래스 android.database.DataSetObservable는 android.database.Observable {
// 메소드 디스크립터 # 8() // V 스택을 확장 한 공개 DataSetObservable(); 0 aload_0 android.database.Observable (invokespecial [이] 1) [1] 4 새로운 java.lang.RuntimeException가 [2] DUP 7 [3] 10 invokespecial java.lang.RuntimeException가 (자바 8 LDC. [pc : 0, line : 5] 로컬 변수 표 : 로컬 :이 색인 : 0 유형 : 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;
}
는 mInflater.inflate '에 두 번째 인수()'로'tickerList'을 전달하려고합니다. 정말 이상한 예외입니다. 더 쉽게 읽을 수 있도록 4 개의 들여 쓰기로 붙일 수 있습니까? – synic
스택 추적이라고 생각하지 않습니다. 정지 된 스레드를 보여주는 이클립스 창처럼 보입니다. Eclipse에서'adb logcat', DDMS 또는 DDMS 퍼스펙티브를 사용하여 예외 정보를 얻으십시오. – CommonsWare
ArrayAdapter 대신 BaseAdapter를 사용하는 이유는 무엇입니까? – Macarse