2014-04-14 72 views
0

我有android應用程序需要android和mysql數據庫之間的連接使用php應用程序工作完美。只有顯示用戶操作不起作用此方法將用戶顯示在具有某些數據的列表中。eclipse在InBackground方法中顯示錯誤我不知道如何修復它

任何人都可以幫助我解決這個錯誤?

logcat的錯誤

 04-14 21:37:37.378: E/AndroidRuntime(1854): Caused by: java.lang.NullPointerException 
04-14 21:37:37.378: E/AndroidRuntime(1854):  at com.devleb.loginDemo.UserListActivity$getUserList.doInBackground(UserListActivity.java:143) 
04-14 21:37:37.378: E/AndroidRuntime(1854):  at com.devleb.loginDemo.UserListActivity$getUserList.doInBackground(UserListActivity.java:1) 
04-14 21:37:37.378: E/AndroidRuntime(1854):  at android.os.AsyncTask$2.call(AsyncTask.java:287) 
04-14 21:37:37.378: E/AndroidRuntime(1854):  at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
04-14 21:37:37.378: E/AndroidRuntime(1854):  ... 4 more 

User.java
package com.devleb.loginDemo; 

import java.util.HashMap; 

//@SuppressWarnings("serial") 
public class User extends HashMap<String, String> { 

    /** 
    * 
    */ 
    String name; 
    String date; 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getDate() { 
     return date; 
    } 

    public void setDate(String date) { 
     this.date = date; 
    } 

} 

CustomAdapter.java
package com.devleb.loginDemo; 

import java.util.ArrayList; 
import java.util.Date; 

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.TextView; 

public class CustomAdapter extends BaseAdapter { 

    private static ArrayList<User> usersList; 

    // private static ArrayList name, date; 
    LayoutInflater layoutInflater; 
    String[] userName; 
    Date[] createdDate; 
    Context context; 

    @SuppressWarnings("rawtypes") 
    public CustomAdapter(ArrayList<User> result, Context c) { 
     usersList = result; 
     context = c; 

    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return usersList.size(); 
    } 

    @Override 
    public Object getItem(int arg0) { 
     // TODO Auto-generated method stub 
     return usersList.get(arg0); 
    } 

    @Override 
    public long getItemId(int arg0) { 
     // TODO Auto-generated method stub 
     return arg0; 
    } 

    @Override 
    public View getView(int position, View arg1, ViewGroup parent) { 
     // TODO Auto-generated method stub 

     layoutInflater = (LayoutInflater) context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View row = null; 

     row = layoutInflater.inflate(R.layout.list_item, parent, false); 
     TextView txtCreateDate = (TextView) row 
       .findViewById(R.id.txtCreateDate); 

     txtCreateDate.setText(usersList.get(position).getDate().toString()); 

     TextView txtName = (TextView) row.findViewById(R.id.name); 

     txtName.setText(usersList.get(position).getName()); 
     return row; 
    } 

} 

UserListActivity.java
package com.devleb.loginDemo; 

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 

import org.apache.http.NameValuePair; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import android.os.AsyncTask; 
import android.os.Bundle; 
import android.app.Activity; 
import android.app.ListActivity; 
import android.content.Intent; 
import android.util.Log; 
import android.view.Menu; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ListAdapter; 
import android.widget.ListView; 
import android.widget.SimpleAdapter; 
import android.widget.TextView; 
import android.widget.Toast; 

public class UserListActivity extends ListActivity { 

    JSONParser jsonParser = new JSONParser(); 

    // ArrayList<HashMap<String, String>> usersList; 

    // **** added from internt*************/// 
    @SuppressWarnings("rawtypes") 
    ArrayList<User> arrayList_userList; 
    ListView lvUsers; 
    // **** added from internt*************/// 

    private static String url_display_user = "http://10.0.3.2/android_connect/display_user.php"; 

    // JSON Node names 
    private static final String TAG_SUCCESS = "success"; 
    private static final String TAG_MESSAGE = "message"; 

    private static final String TAG_ID = "id"; 

    private static final String TAG_USERS = "userlist"; 

    private static final String TAG_USER = "user"; 
    private static final String TAG_DATE = "date"; 

    // private static final String TAG_NAME = "name"; 

    // employees JSONArray 
    JSONArray users = null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_user_list); 

     // usersList = new ArrayList<HashMap<String, String>>(); 

     new getUserList().execute(); 

     // getListView 
     lvUsers = (ListView) findViewById(android.R.id.list); 

     lvUsers.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> arg0, View view, int arg2, 
        long arg3) { 

       // String id = ((TextView) 
       // view.findViewById(R.id.uid)).getText() 
       // .toString(); 

       // Intent in = new Intent(getBaseContext(), StatusList.class); 
       // in.putExtra(TAG_ID, uid); 

       // startActivity(in); 
      } 
     }); 
    } 

    class getUserList extends AsyncTask<String, String, String> { 

     /** 
     * Before starting background thread Show Progress Dialog 
     * */ 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 

      UserListActivity.this.setProgressBarIndeterminateVisibility(true); 
     } 

     @Override 
     protected String doInBackground(String... params) { 
      // TODO Auto-generated method stub 

      // Building Parameters 
      List<NameValuePair> parametres = new ArrayList<NameValuePair>(); 
      // getting JSON string from URL 
      JSONObject json = jsonParser.makeHttpRequest(url_display_user, 
        "GET", parametres); 

      // Check your log cat for JSON reponse 
      Log.d("All Users: ", json.toString()); 

      try { 
       // Checking for SUCCESS TAG 
       int success = json.getInt(TAG_SUCCESS); 

       if (success == 1) { 
        // products found 
        // Getting Array of Products 
        users = json.getJSONArray(TAG_USERS); 

        // looping through All Users 
        for (int i = 0; i < users.length(); i++) { 
         JSONObject c = users.getJSONObject(i); 

         // Storing each json item in variable 
         String id = c.getString(TAG_ID); 
         String user = c.getString(TAG_USER); 
         String cdate = c.getString(TAG_DATE).toString(); 

         // creating new HashMap 
         User map = new User(); 

         // adding each child node to HashMap key => value 
         map.put(TAG_ID, id); 
         map.put(TAG_USER, user); 
         map.put(TAG_DATE, cdate); 

         // adding HashList to ArrayList 

         // usersList.add(map); 

         arrayList_userList.add(map); 
        } 
        // ***********************************// 
        // From the internet 

        // arrayList_userList = new 
        // ArrayList<User>(usersList.value()) 

        // **********************************// 

        return json.getString(TAG_MESSAGE); 
       } else { 

        return json.getString(TAG_MESSAGE); 

       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 

      return null; 
     } 

     /** 
     * After completing background task Dismiss the progress dialog 
     * **/ 
     protected void onPostExecute(String result) { 
      // dismiss the dialog after getting all products 
      if (result != null) { 

       UserListActivity.this 
         .setProgressBarIndeterminateVisibility(false); 

       /** 
       * Updating parsed JSON data into ListView 
       * */ 
       /* 
       * ListAdapter adapter = new 
       * SimpleAdapter(UserListActivity.this, usersList, 
       * R.layout.list_item, new String[] { TAG_ID, TAG_USER }, new 
       * int[] { R.id.uid, R.id.name }); // updating listview 
       * setListAdapter(adapter); 
       */ 
       lvUsers.setAdapter(new CustomAdapter(arrayList_userList, 
         getBaseContext())); 

       Toast.makeText(getBaseContext(), result, Toast.LENGTH_LONG) 
         .show(); 

      } 
     } 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.user_list, menu); 
     return true; 
    } 

} 

回答

0

它告訴你確切的錯誤在哪裏。你得到一個空指針異常。

從您的日誌貓:

04-14 21:37:37.378: E/AndroidRuntime(1854): Caused by: java.lang.NullPointerException 
04-14 21:37:37.378: E/AndroidRuntime(1854):  at com.devleb.loginDemo.UserListActivity$getUserList.doInBackground(UserListActivity.java:143) 
04-14 21:37:37.378: E/AndroidRuntime(1854):  at com.devleb.loginDemo.UserListActivity$getUserList.doInBackground(UserListActivity.java:1) 
04-14 21:37:37.378: E/AndroidRuntime(1854):  at android.os.AsyncTask$2.call(AsyncTask.java:287) 
04-14 21:37:37.378: E/AndroidRuntime(1854):  at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
04-14 21:37:37.378: E/AndroidRuntime(1854):  ... 4 more 

在UserListActivity線143,好像要添加到一個空的ArrayList。從類的快速查看,似乎你是從來沒有初始化arrayList_userList

+0

我做初始化arraList_userList現在我得到另一個錯誤,我將編輯logCat顯示新的錯誤,你能幫助我? – user3499032

+0

如果這解決了你最初的問題,那麼你應該關閉這個並保留原始的logcat並提出另一個問題並將其鏈接到此處。你的更新似乎是一個完全不同的問題,所以應該在另一個問題中提出。 – Naveed

+0

ohhh好吧,我會問新的一個抱歉的誤解 – user3499032

相關問題