【发布时间】:2014-03-21 11:45:43
【问题描述】:
我想用 json 值填充我的列表视图。我能够获取所有 json 值,但是 不知道是什么问题。
在我的 logcat 中,它显示 NullPointerException,不幸的是我的活动停止了。
请给个建议......
我的 java
public class Certify_Absent_List extends Activity {
private static ListView listview;
private static List<String> list;
private String teachername,date;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//setContentView(R.layout.);
listview=(ListView) findViewById(R.id.listView1);
list=new ArrayList<String>();
teachername=getIntent().getExtras().getString("teachername");
date=getIntent().getExtras().getString("today");
new Absent_list_bg_task().execute();
}
private class Absent_list_bg_task extends AsyncTask<String,Void,String>
{
protected String doInBackground(String... params) {
try{
String link="http://192.168.1.11:81/schoolapp/absent_list.php";
String data = URLEncoder.encode("teachername", "UTF-8")
+ "=" + URLEncoder.encode("teacher1", "UTF-8");
data += "&" + URLEncoder.encode("date", "UTF-8")
+ "=" + URLEncoder.encode("2013-01-01", "UTF-8");
/* String data = URLEncoder.encode("teachername ", "UTF-8")
+ "=" + URLEncoder.encode("teacher1", "UTF-8");
data += "&" + URLEncoder.encode("date", "UTF-8")
+ "=" + URLEncoder.encode("2013-01-01", "UTF-8");*/
URL url = new URL(link);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter
(conn.getOutputStream());
wr.write( data );
wr.flush();
BufferedReader reader = new BufferedReader
(new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line = null;
// Read Server Response
while((line = reader.readLine()) != null)
{
sb.append(line);
break;
}
return sb.toString();
}catch(Exception e){
return new String("Exception: " + e.getMessage());
}
}
@Override
protected void onPostExecute(String result)
{
ArrayAdapter<String> adapter = null;
JSONArray arr = null;
JSONObject obj = null;
Toast.makeText(Certify_Absent_List.this,result, Toast.LENGTH_LONG).show();
if(result.equals("wrong"))
{
Toast.makeText(Certify_Absent_List.this,"Invalid username or password.", Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(Certify_Absent_List.this,result, Toast.LENGTH_LONG).show();
try {
arr=new JSONArray(result);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for(int i=0;i<arr.length();i++)
{
try {
obj=arr.getJSONObject(i);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
list.add(obj.getString("ChildName"));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Toast.makeText(Certify_Absent_List.this,list.get(i).toString(), Toast.LENGTH_LONG).show();
}
}
adapter=new ArrayAdapter<String>(Certify_Absent_List.this, android.R.layout.simple_list_item_1, list);
//adapter.notifyDataSetChanged();
listview.setAdapter(adapter);
}
}
}
Json 输出
[{"ChildName":""},{"ChildName":"childname1"},{"ChildName":"childname7"},{"ChildName":"childname11"},{"ChildName":"childname11"},{"ChildName":"childname11"}]
LogCat:
03-21 07:35:29.128: E/AndroidRuntime(1443): java.lang.NullPointerException
03-21 07:35:29.128: E/AndroidRuntime(1443): at com.example.certify_teacher_login.Certify_Absent_List$Absent_list_bg_task.onPostExecute(Certify_Absent_List.java:121)
03-21 07:35:29.128: E/AndroidRuntime(1443): at com.example.certify_teacher_login.Certify_Absent_List$Absent_list_bg_task.onPostExecute(Certify_Absent_List.java:1)
03-21 07:35:29.128: E/AndroidRuntime(1443): at android.os.AsyncTask.finish(AsyncTask.java:632)
03-21 07:35:29.128: E/AndroidRuntime(1443): at android.os.AsyncTask.access$600(AsyncTask.java:177)
03-21 07:35:29.128: E/AndroidRuntime(1443): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
03-21 07:35:29.128: E/AndroidRuntime(1443): at android.os.Handler.dispatchMessage(Handler.java:102)
03-21 07:35:29.128: E/AndroidRuntime(1443): at android.os.Looper.loop(Looper.java:137)
03-21 07:35:29.128: E/AndroidRuntime(1443): at android.app.ActivityThread.main(ActivityThread.java:4998)
03-21 07:35:29.128: E/AndroidRuntime(1443): at java.lang.reflect.Method.invokeNative(Native Method)
03-21 07:35:29.128: E/AndroidRuntime(1443): at java.lang.reflect.Method.invoke(Method.java:515)
03-21 07:35:29.128: E/AndroidRuntime(1443): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
03-21 07:35:29.128: E/AndroidRuntime(1443): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
03-21 07:35:29.128: E/AndroidRuntime(1443): at dalvik.system.NativeStart.main(Native Method)
【问题讨论】:
-
onPostExecute中的哪一行是 121? -
listview.setAdapter(adapter);
-
您的列表变量为空
-
但是我已经用 list.add 和 json 数据填充了我的列表
-
你如何初始化
listview?
标签: android json android-listview