php - the eclipse display an error in the InBackground method i do not know how to fix it

767

i have android application that need connection between android and mysql database using php the application work perfect. only the display user action do not work this method display the user in a list with some data.

can anyone help me to fix this error ??

LogCat Error

       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;
    }

}
736

Answer

Solution:

It tells you exactly where your error is. You are getting a null pointer exception.

From your log cat:

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

In UserListActivity line 143, it seems like you are adding to a null ArrayList. From a quick look over the class, it seems like you are never initializing thearrayList_userList

People are also looking for solutions to the problem: php - Parsing one element with SimpleXML

Source

Didn't find the answer?

Our community is visited by hundreds of web development professionals every day. Ask your question and get a quick answer for free.

Ask a Question

Write quick answer

Do you know the answer to this question? Write a quick response to it. With your help, we will make our community stronger.

Similar questions

Find the answer in similar questions on our website.