Java 解析值时获取错误
我试图解析数据时出错 该程序将从数据库中检索数据,并将其解析到主菜单,在主菜单中,RecycleView列出了诸如名称、用户名、图像和描述等数据 我正在学习这个教程 这是有错误的代码 DataParser.javaJava 解析值时获取错误,java,android,Java,Android,我试图解析数据时出错 该程序将从数据库中检索数据,并将其解析到主菜单,在主菜单中,RecycleView列出了诸如名称、用户名、图像和描述等数据 我正在学习这个教程 这是有错误的代码 DataParser.java public class DataParser extends AsyncTask<Void,Void,Boolean> { //<<<line 22 Context c; String jsonData; RecyclerView rv; Prog
public class DataParser extends AsyncTask<Void,Void,Boolean> { //<<<line 22
Context c;
String jsonData;
RecyclerView rv;
ProgressDialog pd;
ArrayList<Item> items = new ArrayList<>();
public DataParser(Context c, String jsonData, RecyclerView rv) {
this.c = c;
this.jsonData = jsonData;
this.rv = rv;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
pd = new ProgressDialog(c);
pd.setTitle("Parse");
pd.setMessage("Parsing...Please wait.");
pd.show();
}
@Override
protected Boolean doInBackground(Void... params) {
return null;
}
@Override
protected void onPostExecute(Boolean success) {
super.onPostExecute(success);
pd.dismiss();
if(success) //<<<line 59
{
//bind
MyAdapter adapter = new MyAdapter(c,items);
rv.setAdapter(adapter);
}
else
{
Toast.makeText(c, "Unable to parse", Toast.LENGTH_SHORT).show();
}
}
private Boolean parseData()
{
try
{
JSONArray ja = new JSONArray(jsonData);
JSONObject jo;
items.clear();
Item item;
for(int i = 0; i<ja.length();i++)
{
jo=ja.getJSONObject(i);
int itemid = jo.getInt("itemid");
String imagepath = jo.getString("imagepath");
String itemname = jo.getString("itemname");
String username = jo.getString("username");
String itemdesc = jo.getString("itemdesc");
item = new Item();
item.setId(itemid);
item.setItemname(itemname);
item.setUsername(username);
item.setItemdesc(itemdesc);
item.setImagepath(imagepath);
items.add(item);
}
return true;
} catch (JSONException e) {
e.printStackTrace();
}
return false;
}
}
这是因为您总是从
doInBackground
返回null
。因此,onPostExecute()
中的success
变量始终为空。在doInBackground
内部具有适当的解析逻辑,并根据解析是否成功,返回true或false。这是因为在doInBackground
方法中返回了null
java.lang.NullPointerException:
Attempt to invoke virtual method 'boolean java.lang.Boolean.booleanValue()' on a null object reference
at chengweifeng1132701116.fyp.m_MySQL.DataParser.onPostExecute(DataParser.java:59)
at chengweifeng1132701116.fyp.m_MySQL.DataParser.onPostExecute(DataParser.java:22)