java - 尝试从 MySQL 数据库创建列表视图时出现解析器错误
问题描述
我正在关注本教程https://www.youtube.com/watch?v=WPJxnQpb_Vk尝试将一些数据库条目显示为列表视图。下载器似乎工作正常并正在调用解析器。我确实在屏幕上看到了解析器的进度对话框,但是解析器本身在执行后返回 0,这会导致弹出错误消息。任何输入表示赞赏。
public class Parser extends AsyncTask<Void,Integer,Integer> {
Context c;
String data;
ListView lvSelectedThesis;
ArrayList<String> selectedThesis = new ArrayList<>();
ProgressDialog pd;
public Parser(Context c, String data, ListView lvSelectedThesis) {
this.c = c;
this.data = data;
this.lvSelectedThesis = lvSelectedThesis;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
pd = new ProgressDialog(c);
pd.setTitle("Parse Data");
pd.setMessage("Parsing ....Please Wait");
}
@Override
protected Integer doInBackground(Void... params) {
//return an integer to postexecute
return this.parse();
}
@Override
protected void onPostExecute(Integer integer) {
super.onPostExecute(integer);
if(integer == 1)
{
//success
//adapt data to listview
ArrayAdapter<String> adapter = new ArrayAdapter<String>(c, android.R.layout.simple_list_item_1,selectedThesis);
lvSelectedThesis.setAdapter(adapter);
lvSelectedThesis.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Snackbar.make(view,selectedThesis.get(position),Snackbar.LENGTH_SHORT).show();
}
});
}else
{
//failure
Toast.makeText(c,"Unable to parse data",Toast.LENGTH_SHORT).show();
}
pd.dismiss();
}
//parse received data
private int parse()
{
try
{
//add data to json array
JSONArray ja = new JSONArray(data);
//create json object to hold a single item
JSONObject jo = null;
selectedThesis.clear();
//look through json array
for(int i = 0; i < ja.length(); i++)
{
jo = ja.getJSONObject(i);
//retrieve thesis title
String title = jo.getString("Title");
//add it to our array list
selectedThesis.add(title);
}
} catch (JSONException e) {
e.printStackTrace();
}
return 0;
}
}
解决方案
推荐阅读
- python - 计算特定形状的区域面积
- javascript - 使用 Python 调用网页上的 JavaScript 函数
- jenkins - 如何根据评论运行不同的管道?
- c - 立即发送到 TCP 套接字 bufferevent_write bufferevent libevent
- azure - 如何获取使用 Azure CLI 安装操作系统的 Azure VMS 列表?
- python - 如何在熊猫数据框列python中将1添加到所有数字==到0
- onclicklistener - 哪个方法负责点击mapbox多边形android?问二:用哪个list比较好(linked或者arrayListof和hashMap)
- laravel - Laravel required_without 使用电子邮件或数字验证进行验证
- amazon-web-services - 从公共互联网访问在 aws ec2 实例上本地运行的 web api
- jenkins - 如何通过jenkins在groovy中并行执行多个curl调用?