請不要將其標記爲重複項,因爲昨天提供的解決方案無效。當我更新它時,recyclerview崩潰
我填充了一個recyclerview
,它工作正常,雖然加載速度有點慢。
但是,例如當我添加一個新名稱並更新recyclerview
它與NullPointerException
崩潰。
下面是類和代碼:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainOnes);
recyclerView = (RecyclerView) findViewById(R.id.recycleOnes);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setHasFixedSize(true);
adapter = new MusicRecyclerAdapter(list);
recyclerView.setAdapter(adapter);
populateList();
}
public void populateList(){
DisplayUsersList displayUsersList = new DisplayUsersList();
displayUsersList.execute();
}
public class DisplayUsersList extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... params) {
...
}
@Override
protected void onPostExecute(String postData) {
try {
list.clear();
JSONArray jsonArray = new JSONArray(postData);
for(int i=0; i < jsonArray.length(); i++){
String forename = jsonArray.getJSONObject(i).getString("forename");
String surname = jsonArray.getJSONObject(i).getString("surname");
UserDetails userDetails = new UserDetails(forename, musicName, surname);
list.add(userDetails);
}
adapter.notifyDataSetChanged();
} catch (JSONException e) {
e.printStackTrace();
}
}
}
public class AddUsers extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... params) {
...
}
@Override
protected void onPostExecute(String postData) {
populateList();
}
}
我認爲這是因爲populateList()
方法調用的崩潰,因爲我已經初始化一切
我的logcat:
java.lang.NullPointerException
at georgezs.userdas.UserDBGUI$DisplayUsersList.onPostExecute(UserDBGUI.java:218)
at android.os.AsyncTask.finish(AsyncTask.java:741)
at android.os.AsyncTask.access$600(AsyncTask.java:197)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:654)
at android.os.Handler.dispatchMessage(Handler.java:100)
線218 is adapter.notifyDataSetChanged();
I t舉例說明onPostExecute
中的recyclerview
,但它不斷崩潰。我的代碼的工作原理是它實際加載數據並將其顯示在recyclerview
中。當我再次調用populateList()
方法時,它不會重新顯示或重新加載。
此bug已被竊聽我在我睡覺字面上 - 所以任何幫助和解決方案將意味着很多對我
編輯:我想我知道到底哪裏出錯 - 它是在POSTEXECUTE方法在ADDUSERS
類。
感謝
爲什麼'recyclerView.setHasFixedSize(true);'爲? –
我認爲這是當你說你添加一個名字'......是如何完成它對準回收視圖 –
?它是在相同的片段/活動中,還是作爲單獨的片段/活動來完成?這條信息可能對適配器爲什麼變爲空的至關重要。 – Elye