Я использую бесконечный адаптер в своем приложении, первоначально только 25 данных отображаются в виде списка, когда он достигает конца, мне нужно добавить следующий 25 объект.
Для этого я использую бесконечный адаптер, создав его как отдельный класси инициализируйте адаптер следующим образом:
public BikeEndlessAdapter(Context c, ArrayList<BikeSearchResultsIdentifier> results,Activity test, String intentData23) {
super(getAdapter(c,
R.layout.search_bike, results, test));
re=c;
intentData=intentData23;
ter=test.getLayoutInflater();
rotate=new RotateAnimation(0f, 360f, Animation.RELATIVE_TO_SELF,
0.5f, Animation.RELATIVE_TO_SELF,
0.5f);
rotate.setDuration(600);
rotate.setRepeatMode(Animation.RESTART);
rotate.setRepeatCount(Animation.INFINITE);
// TODO Auto-generated constructor stub
}
static ListAdapter getAdapter(Context c, int searchBike,
ArrayList<BikeSearchResultsIdentifier> results, Activity test) {
// TODO Auto-generated method stub
bikeItemList=results;
adapter=new BikeListAdapter(c,
R.layout.search_bike, bikeItemList, test);
return adapter;
}
, где BikeListadapter - это другой класс адаптера ArrayList, поскольку каждая строка имеет разные свойства.
При первой загрузке данных используется бесконечный адаптер, сначала25 dataObject был успешно показан в списке с использованием следующего кода
final ListView bikeListView = (ListView) findViewById(R.id.list_bike);
bikeListView.setAdapter(new BikeEndlessAdapter(BikesList.this, bikeItemList, this,intentData));
в моем классе BikeList.
Когда он достигает конца списка (то есть 25-й строки), соответствующая бесконечная анимация адаптера имеетпоказано, затем выполняется метод cacheInBackground. В этом методе я нажал на сервис, чтобы получить следующий набор добавлений, который также успешно выполнен.
Но когда я пытаюсь добавить его, выдается ошибка,
@Override
protected void appendCachedData() {
// TODO Auto-generated method stub
//@SuppressWarnings("unchecked")
ArrayAdapter<BikeSearchResultsIdentifier> adapter=(ArrayAdapter<BikeSearchResultsIdentifier>)getWrappedAdapter();
System.out.println("Wrapper class: "+adapter);
for(int i=0;i<bikeItemList.size();i++){
adapter.add(bikeItemList.get(i));
}
adapter.notifyDataSetChanged();
}
это ошибка журнала, у меня есть:
03-07 15:52:02.292: E/AndroidRuntime(762): java.lang.NullPointerException
03-07 15:52:02.292: E/AndroidRuntime(762): at com.InternetGMBH.ThousandPS.Activities.BikeEndlessAdapter.appendCachedData(BikeEndlessAdapter.java:93)
03-07 15:52:02.292: E/AndroidRuntime(762): at com.commonsware.cwac.endless.EndlessAdapter$AppendTask.onPostExecute(EndlessAdapter.java:179)
03-07 15:52:02.292: E/AndroidRuntime(762): at com.commonsware.cwac.endless.EndlessAdapter$AppendTask.onPostExecute(EndlessAdapter.java:1)
03-07 15:52:02.292: E/AndroidRuntime(762): at android.os.AsyncTask.finish(AsyncTask.java:417)
03-07 15:52:02.292: E/AndroidRuntime(762): at android.os.AsyncTask.access$300(AsyncTask.java:127)
03-07 15:52:02.292: E/AndroidRuntime(762): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
03-07 15:52:02.292: E/AndroidRuntime(762): at android.os.Handler.dispatchMessage(Handler.java:99)
03-07 15:52:02.292: E/AndroidRuntime(762): at android.os.Looper.loop(Looper.java:123)
03-07 15:52:02.292: E/AndroidRuntime(762): at android.app.ActivityThread.main(ActivityThread.java:4363)
03-07 15:52:02.292: E/AndroidRuntime(762): at java.lang.reflect.Method.invokeNative(Native Method)
03-07 15:52:02.292: E/AndroidRuntime(762): at java.lang.reflect.Method.invoke(Method.java:521)
03-07 15:52:02.292: E/AndroidRuntime(762): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
03-07 15:52:02.292: E/AndroidRuntime(762): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
03-07 15:52:02.292: E/AndroidRuntime(762): at dalvik.system.NativeStart.main(Native Method)