Search code examples
androidsqllistvieweditorandroid-arrayadapter

Get Data from SQL Database and set it to ListView in Android


I want to get data from SQL Server and set it to list.

1. I already have data in my current Activity. _I printed it on Logcat_ .

2. Now I want to set that data to my list.

Basically I have taken a static list of data for the basic view, that I mention there

How to set that data to list ?

Here is my Code that will show content how i did code :

public class menus extends Activity {

ListView list;
ArrayAdapter<String> adapter = null;
Editor edit1;
SharedPreferences pref;
SharedPreferences.Editor editor;

int i = 0,count = 0;
String[] listOfMenus;
String listdetails;
Connection xyz;
Statement st;
ResultSet rs;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.select_item);

    list=(ListView)findViewById(R.id.menulistblank);

    editor = getPreferences(MODE_PRIVATE).edit();

     /////// This is my Static data that I stored in list.

    String[] values = new String[]{"Adroid Developer",".Net Developer","Java Developer","BA"};

        adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, android.R.id.text1, values);

         list.setAdapter(adapter); 

                // Object of connection for getting content.
         xyz = MainActivity.conn;

         MyNetworkTask myWebFetch = new MyNetworkTask();
         myWebFetch.execute();

         list.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1,
                    int arg2, long arg3) {
                // TODO Auto-generated method stub
                Toast.makeText(getBaseContext(), "You click "+arg2, Toast.LENGTH_SHORT).show();
            }
        });
}

   //////// ASYNC TASK ////////

private class MyNetworkTask extends AsyncTask<Void, Void, Void> {

     protected void onProgressUpdate(Integer... progress) {
         Log.w("Process completed", "In XXXXXXXX");
     }

     protected void onPostExecute(Long result) {
          Log.w("Process completed", "aaaaaaaaaa");
     }

    @Override
    protected Void doInBackground(Void... params) {
        // TODO Auto-generated method stub
        Log.w("Process completed", "In doInBackground..");
        try {
            st = MainActivity.conn.createStatement();
            rs = st.executeQuery("SELECT * FROM lalit_db;");
            while(rs.next()){

                  // ***** It prints my required data  in Logcat
                Log.w(rs.getString(2), rs.getString(3));
                }

            Thread.sleep(5000);

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return null;
    }
 }
}// Main Program Ends..

Please tell me what should i do to

set this data of logcat Log.w(rs.getString(2), rs.getString(3)); in List.


Solution

    1. add strings in values while fetching data

      st = MainActivity.conn.createStatement();
      rs = st.executeQuery("SELECT * FROM lalit_db;");
      values=new String[st.getFetchSize()]; //total number of rows
      int index=0;
      while(rs.next()){
        values[index]=rs.getString(2);
        index++;
       // ***** It prints my required data  in Logcat
       Log.w(rs.getString(2), rs.getString(3));
      }
      
    2. Display in onPostExecute()

      protected void onPostExecute(Void result) {
        Log.w("Process completed", "aaaaaaaaaa");
        adapter = new ArrayAdapter<String>(menus.this,android.R.layout.simple_list_item_1, android.R.id.text1, values);
      
         list.setAdapter(adapter); 
      }
      

    Edit

    add @Override annotation to onPostExecute() method

    @Override
    protected void onPostExecute(Void result) {
          Log.w("Process completed", "aaaaaaaaaa");
     }