What am i missing in my code?

i would like to show my database on a listview in android, but the data is not showing.

Arrival.java package one.two;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import android.app.ListActivity;
import android.database.Cursor;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;

public class Arrival extends ListActivity
{
    private ListView listView;


    /** Called when the activity is first created. */
    public void onCreate(Bundle savedInstanceState)
    {
        ArrayList<String> retList = new ArrayList<String>();

        System.out.println("Start onCreate Function\n");

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        System.out.println("In onCreate Function\n");
        System.out.println("In of GetData\n");
        DBAdapter db = new DBAdapter(this); 

        System.out.println("DB Open\n");
        db.open();
        System.out.println("DB Opened\n");
        retList = getData();
        System.out.println("Out of GetData\n");
        // force count no. of records in table
        // dump to check index
        int cnt = 2;

        int i=0;
        for (i = 0; i<cnt; i++)
            System.out.println(retList.toString());
        System.out.println("Array 2 String\n");

        Cursor c = db.getCursor();
        listView = (ListView) findViewById(android.R.id.list);
         setListAdapter(new ArrayAdapter<String>(this, android.R.id.list));
        ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(this, android.R.id.list);
        this.setListAdapter(mAdapter);
        System.out.println("Show List\n");
        db.close();
    }

    public static ArrayList<String> getData()
     {


        ArrayList<String> items = DBAdapter.getAllTitles();
        // titles ???? redundant
        //ArrayList<String> titles = new ArrayList<String>(items);
        System.out.println("Return a LIST titles\n");
         return items;
        }


    }

DBAdapter.java

package one.two;

import java.util.List;

import android.app.ListActivity;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;

import java.util.ArrayList;

public class DBAdapter
{
    public String status = "status";
    public String id = "id";
    public String arrival = "arrival";
    public String destination = "destination";
    public String ferry = "ferry";
    private static String DB_PATH = "/data/data/one.two/databases/";
    private static final String DATABASE_NAME = "ferry.db";
    private static final String DATABASE_TABLE = "port";
    public static Context context;
    public Cursor c;

    public static SQLiteDatabase DbLib;


    //overloaded non-null constructor
    public DBAdapter(Context context) 
    {
        DbLib = context.openOrCreateDatabase(DATABASE_NAME,  SQLiteDatabase.CREATE_IF_NECESSARY,null);
        System.out.println("OpenOrCreateDB Done");
    }

    public class DatabaseHelper extends SQLiteOpenHelper
    {
        Context context;
        DatabaseHelper(Context context)
        {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
            this.context = context;

        }//end constructor DatabaseHelper

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion,
                int newVersion)
        {
        }//end onUpgrade()

        @Override
        public void onCreate(SQLiteDatabase db)
        {
        }//end onCreate()
    }// end class DatabaseHelper

    private static DatabaseHelper DBHelper;
    //private static SQLiteDatabase DbLib;

    private static final int DATABASE_VERSION = 1;

    //// context brought up /////////////
    //private final Context context;


        /*public void DBAdapter() throws SQLException
        {
            String myPath = DB_PATH + DATABASE_NAME;
            db = SQLiteDatabase.openDatabase(myPath, null,
                    SQLiteDatabase.OPEN_READONLY);
        }//end DBAdapter()*/



        public static ArrayList<String> getAllTitles()
        {

            ArrayList<String> port = new ArrayList<String>();
                Cursor c=null;


                c = DbLib.query("port",
                        new String[] { "status", "id", "arrival",
                                "destination", "ferry" }, null, null,
                        null, null, null);
                try {
                    if (c!=null) { // start - when there is at least 1 record
                        System.out.println("Cursor is NOT NULL");

                        int i =0;
                        for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) 

                        {


                            // Assign database cursor.records to arraylist
                            port.add(i,c.getString(0));
                            port.add(i,c.getString(1));
                            port.add(i,c.getString(2));
                            port.add(i,c.getString(3));
                            port.add(i,c.getString(4));
                            i = i + 1;

                        }
                    } // end - where there is at least 1 record


                } finally {
                    if (c!=null) {
                    c.close();
                }

                }   
            return port;
        }//end getAllTitles()

        public void open() {
            //Open the database
            String myPath = DB_PATH + DATABASE_NAME;
            DbLib = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);

        }
        public Cursor getCursor(){
            return c;

        }

        public void close()
        {
            DbLib.close();

        }
}//end class DBAdapter

main.xml

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/widget0"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<TextView
android:id="@+id/widget32"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Ferry Hub"
android:textSize="25sp"
android:textStyle="bold"
android:textColor="#ff009999"
android:layout_x="97px"
android:layout_y="15px"
>
</TextView>
<TextView
android:id="@+id/widget35"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Arrival Time"
android:layout_x="116px"
android:layout_y="48px"
>
</TextView>
<Button
android:id="@+id/widget36"
android:layout_width="96px"
android:layout_height="40px"
android:text="Back"
android:layout_x="101px"
android:layout_y="299px"
>
</Button>
 <ListView   
            android:id="@android:id/list"
             android:layout_width="fill_parent"
             android:layout_height="fill_parent">
</ListView>


</AbsoluteLayout>

Answers


You should look at CursorAdapter and ResourceCursorAdapter instead of trying to populate an ArrayAdapter, these are designed for the job and will make your code a lot easier to understand.

If you really do want to stick with the code you have then you seem to be missing the code to put your data into the ArrayAdapter, possibly because you're not using the [correct][3] [contructor][4].

[3]: http://developer.android.com/reference/android/widget/ArrayAdapter.html#ArrayAdapter(android.content.Context, int, T[]) [4]: http://developer.android.com/reference/android/widget/ArrayAdapter.html#ArrayAdapter(android.content.Context, int, java.util.List)


Need Your Help

Google Apps "Cannot convert Array to Object[][]" Error with JSON API

json google-apps-script google-sheets google-spreadsheet-api

I have some JSON data that I need to access via my google apps script. On the same script I have been able to access other parts of JSON data from the same API. For this I have used the code before...

Python for loop counter list - counter not working

python list for-loop

Could someone please help me troubleshoot my code.