Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

I am trying to fetch data from mysql DB in android listview. But somehow I am not been able to display the data in the listView

I was trying this with the help of a tutorial,i.e., http://codeoncloud.blogspot.in/2013/07/android-mysql-php-json-tutorial.html

Below is my MainActivity.java

public class MainActivity extends Activity {
 private String jsonResult;
 private String url = "http://10.0.2.2/markit/login.php";
 private ListView listView;
 private TextView textv1;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  listView = (ListView) findViewById(R.id.listView1);
  textv1=(TextView)findViewById(R.id.textView1);
  accessWebService();
 }

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

 // Async Task to access the web
 private class JsonReadTask extends AsyncTask<String, Void, String> {
  @Override
  protected String doInBackground(String... params) {
   HttpClient httpclient = new DefaultHttpClient();
   HttpPost httppost = new HttpPost(params[0]);
   try {
    HttpResponse response = httpclient.execute(httppost);
    jsonResult = inputStreamToString(
      response.getEntity().getContent()).toString();
   }

   catch (ClientProtocolException e) {
    e.printStackTrace();
   } catch (IOException e) {
    e.printStackTrace();
   }
   return null;
  }

  private StringBuilder inputStreamToString(InputStream is) {
   String rLine = "";
   StringBuilder answer = new StringBuilder();
   BufferedReader rd = new BufferedReader(new InputStreamReader(is));

   try {
    while ((rLine = rd.readLine()) != null) {
     answer.append(rLine);
    }
   }

   catch (IOException e) {
    // e.printStackTrace();
    Toast.makeText(getApplicationContext(),
      "Error..." + e.toString(), Toast.LENGTH_LONG).show();
   }
   return answer;
  }

  @Override
  protected void onPostExecute(String result) {
   ListDrwaer();
  }
 }// end async task

 public void accessWebService() {
  JsonReadTask task = new JsonReadTask();
  // passes values for the urls string array
  task.execute(new String[] { url });
 }

 // build hash set for list view
 public void ListDrwaer() {
  List<Map<String, String>> employeeList = new ArrayList<Map<String, String>>();

  try {
   JSONObject jsonResponse = new JSONObject(jsonResult);
   JSONArray jsonMainNode = jsonResponse.optJSONArray("emp_info");
   for (int i = 0; i < jsonMainNode.length(); i++) {
    JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);
    String name = jsonChildNode.optString("employee_name");
    String number = jsonChildNode.optString("employee_no");
    String outPut = name + "-" + number;
    //textv1.setText(name);
    //textv1.setText(jsonResult);
    employeeList.add(createEmployee("employees", outPut));
   }
  } catch (JSONException e) {
   Toast.makeText(getApplicationContext(), "Error" + e.toString(),
     Toast.LENGTH_SHORT).show();
  }

  SimpleAdapter simpleAdapter = new SimpleAdapter(this, employeeList,
    android.R.layout.simple_list_item_1,
    new String[] { "employees" }, new int[] { android.R.id.text1 });
  listView.setAdapter(simpleAdapter);
 }

 private HashMap<String, String> createEmployee(String name, String number) {
  HashMap<String, String> employeeNameNo = new HashMap<String, String>();
  employeeNameNo.put(name, number);
  return employeeNameNo;
 }
}

Below is mainactivity.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TableRow
        android:id="@+id/tableRow1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />

    </TableRow>

    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
         >
    </ListView>

</LinearLayout>

Login.php

<?php
$host="localhost"; //replace with database hostname 
$username="root"; //replace with database username 
$password=""; //replace with database password 
$db_name="markit"; //replace with database name

$con=mysql_connect("localhost", "root", "")or die("cannot connect"); 
mysql_select_db("markit")or die("cannot select DB");
$sql = "select * from emp_info"; 
$result = mysql_query($sql);
$json = array();

if(mysql_num_rows($result)){
while($row=mysql_fetch_assoc($result)){
$json['emp_info'][]=$row;
}
}
mysql_close($con);
echo json_encode($json); 
?> 
share|improve this question
    
are you getting any error or Exception? –  Sunny Mar 28 '14 at 10:15
    
no error but data is not visible in the list ...and it shows as many no of "-" as no of entry in the database –  Ravi Ranjan Mar 28 '14 at 10:19
    
I have tried to print the //textv1.setText(jsonResult); Which results in total JSON result which we find after executing php in browser –  Ravi Ranjan Mar 28 '14 at 10:20
    
try to Log your jsonResult and see what is coming form server. Is it valid json? and post that result here. –  Sunny Mar 28 '14 at 10:24
    
This is the result of printing jsonResult in a textView {"emp_info":[{"emp_no":"1","emp_name":"Ravi"},{"emp_no":"2","emp_name":"Div"},{"‌​emp_no":"3","emp_name":"Harry"},{"emp_no":"4","emp_name":"Suresh"},{"emp_no":"5",‌​"emp_name":"Suu"}]} –  Ravi Ranjan Mar 28 '14 at 10:29

1 Answer 1

up vote 2 down vote accepted

Change this

 String name = jsonChildNode.optString("employee_name");
 String number = jsonChildNode.optString("employee_no");

to

 String name = jsonChildNode.getString("emp_name");
 String number = jsonChildNode.getString("emp_no");
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.