请不要将其标记为重复项,因为昨天提供的解决方案无效。当我更新它时,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