我想做一些關於android ListView
的練習。代碼波紋管是在
listfragment
:Android的一些問題listview
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
View view= inflater.inflate(R.layout.frag_getfriends,container,false);
friendsListView=(ListView)view.findViewById(android.R.id.list);
infoTextView=(TextView)view.findViewById(android.R.id.empty);
swipe=(SwipeRefreshLayout)view.findViewById(R.id.swipe_refresh);
swipe.setOnRefreshListener(this);
arrayAdapter=new DataListAdapter(getActivity(),R.layout.userinfo_list_config,null);
friendsListView.setAdapter(arrayAdapter);
friendsListView.setOnItemClickListener((parent,itemView,position,id)->{
if(friends!=null){
User friend=friends.get(position);
Toast.makeText(getActivity(),friend.getName(),Toast.LENGTH_SHORT).show();
}
});
presenter.startQuery(true);
return view;
}
Adapter
構造函數是:
public DataListAdapter(Context context, int itemLayoutResoureId, ArrayList<User>friends){
super(context,itemLayoutResoureId,friends);
this.context=context;
this.users=new ArrayList<>();
users.addAll(friends);
}
在年初,listview
沒有數據顯示,直至該應用獲取一些數據在線:
@Override
public void setDataList(ArrayList<User> friendsList) {
this.friends=friendsList;
arrayAdapter.clear();
arrayAdapter.addAll(friendsList);
arrayAdapter.notifyDataSetChanged();
friendsListView.setAdapter(arrayAdapter);
}
後來我可以做一些刷新。每次刷新發生時,回調
setDataList
被觸發,listview
被更新。 但是,該應用程序崩潰。 logcat中顯示:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mrdreamer.iknow/com.example.mrdreamer.iknow.Social.GetFriends}: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object[] java.util.Collection.toArray()' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object[] java.util.Collection.toArray()' on a null object reference
at java.util.ArrayList.addAll(ArrayList.java:188)
at com.example.mrdreamer.iknow.Social.DataListAdapter.<init>(DataListAdapter.java:35)
at com.example.mrdreamer.iknow.Social.GetFriendsFrag.onCreateView(GetFriendsFrag.java:42)
at android.app.Fragment.performCreateView(Fragment.java:2220)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:973)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1148)
at android.app.BackStackRecord.run(BackStackRecord.java:793)
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1535)
at android.app.FragmentController.execPendingActions(FragmentController.java:325)
at android.app.Activity.performStart(Activity.java:6252)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
的問題是:
arrayAdapter=new DataListAdapter(getActivity(),R.layout.userinfo_list_config,null);
最後一個參數不能爲空,我明白了。 現在我應該更改爲SimpleCursorAdapter還是僅對當前代碼進行一些更改? :)謝謝你提前。我是新開發android開發。我是非常gratefull。:)
上傳您的崩潰日誌 – Boopathi
@吳環宇,post ur適配器類的構造函數 – shahid17june
使用CustomArrayAdapter。去谷歌上查詢。 – Nidhi