Skip to content Skip to sidebar Skip to footer

Printing Sqlite Entries Into A Listview

I am having some trouble learning the ins and outs of the SQLite world. I have some code that is allowing me to enter data into a DB. But what i want to do is return this data int

Solution 1:

this is the code of getting data from database and insert into Arraylist and insert into arrayAdapter and than display it in listview .

i just done some editing in your existing code.

com.example.rory.dbtest.DBAdapter db = new com.example.rory.dbtest.DBAdapter(this);
    db.open();

ArrayList<String> data_list=newArrayList<String>();
ListView lv=(ListView)findViewById(R.id.listView1);
Cursor c = db.getAllRecords();
    if (c.moveToFirst())
    {
        do {
            data_list.add(c.getString(0));
            DisplayRecord(c);
        } while (c.moveToNext());
    }
ArrayAdapter<String> aa=newArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, data_list);
        lv.setAdapter(aa);

lv - is the object of ListView.

Solution 2:

Create a ListView. Then provide cursorAdapter to the ListView as it's adapter to bind the data in the database to the ListView.

There are examples in the samples folder of the SDK you downloaded in the project called ApiDemos.

Solution 3:

You need to have, 1) listview, 2) Object class, 3) Custom Adapter

Here I have just tried to implement as per your requirement. Since I dont have db I did not try to run. The point to is to five you idea. Because listview is widget that we use more frequently in android. This is the best approach as per my knowledge.

Layouts that required,

activity_list.xml :

<RelativeLayout 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=".ListActivity" >

    <ListView
        android:id="@+id/list"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

</RelativeLayout>

row_item.xml :

<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:padding="10dp" ><TextViewandroid:id="@+id/Item"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Item" /><TextViewandroid:id="@+id/Litres"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="litres" /></LinearLayout>

ListActivity.java :

publicclassListActivityextendsActivity {

    ArrayList<RowData> rowDataArrayList = newArrayList<RowData>();
    ListView list;
    ListAdapter listAdapter;

    @OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list);

        list = (ListView) findViewById(R.id.list);
        listAdapter = newListAdapter(ListActivity.this, rowDataArrayList);
        list.setAdapter(listAdapter);
        getDataFromDB();
    }

    @OverridepublicbooleanonCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.list, menu);
        returntrue;
    }

    privatevoidgetDataFromDB() {
        rowDataArrayList.clear();

        com.example.rory.dbtest.DBAdapterdb=newcom.example.rory.dbtest.DBAdapter(
                this);
        db.open();
        Cursorc= db.getAllRecords();
        if (c.moveToFirst()) {
            do {
                /**
                 * Set your data in class
                 */RowDatarowData=newRowData();
                rowData.setId(c.getString(0));
                rowData.setItem(c.getString(1));
                rowData.setLitres(c.getString(2));
                rowDataArrayList.add(rowData);

            } while (c.moveToNext());
        }
        db.close();
        /**
         * To reflect new data set change in listview
         */
        listAdapter.notifyDataSetChanged();
    }
}

RowData.java : Model[pojo] class to save data and to bind in custom adapter.

publicclassRowData {
    StringId;
    StringItem;
    StringLitres;

    publicStringgetId() {
        returnId;
    }
    publicvoidsetId(String id) {
        Id = id;
    }
    publicStringgetItem() {
        returnItem;
    }
    publicvoidsetItem(String item) {
        Item = item;
    }
    publicStringgetLitres() {
        returnLitres;
    }
    publicvoidsetLitres(String litres) {
        this.Litres = litres;
    }

}

ListAdapter.java : custom adapter to bind in listview

publicclassListAdapterextendsBaseAdapter {
    private Context mContext;
    private ArrayList<RowData> rowDataArrayList = newArrayList<RowData>();

    publicListAdapter(Context context, ArrayList<RowData> rowData) {
        mContext = context;
        rowDataArrayList = rowData;
    }

    @OverridepublicintgetCount() {
        returnrowDataArrayList== null ? 0 : rowDataArrayList.size();
    }

    @Overridepublic Object getItem(int position) {
        returnnull;
    }

    @OverridepubliclonggetItemId(int position) {
        return0;
    }

    @Overridepublic View getView(int position, View convertView, ViewGroup parent) {
        Viewview=null;

        if (convertView == null) {
            Holderholder=newHolder();
            view = View.inflate(mContext, R.layout.row_item, null);
            holder.tvtItem = (TextView) view.findViewById(R.id.Item);
            holder.tvtLitres = (TextView) view.findViewById(R.id.Litres);
            view.setTag(holder);
        } else {
            view = convertView;
        }

        Holderholder= (Holder) view.getTag();
        holder.tvtItem.setText(rowDataArrayList.get(position).getItem());
        holder.tvtLitres.setText(rowDataArrayList.get(position).getLitres());

        return view;
    }

    classHolder {
        TextView tvtItem;
        TextView tvtLitres;
    }
}
publicclassListAdapterextendsBaseAdapter {
    private Context mContext;
    private ArrayList<RowData> rowDataArrayList = newArrayList<RowData>();

    publicListAdapter(Context context, ArrayList<RowData> rowData) {
        mContext = context;
        rowDataArrayList = rowData;
    }

    @OverridepublicintgetCount() {
        returnrowDataArrayList== null ? 0 : rowDataArrayList.size();
    }

    @Overridepublic Object getItem(int position) {
        returnnull;
    }

    @OverridepubliclonggetItemId(int position) {
        return0;
    }

    @Overridepublic View getView(int position, View convertView, ViewGroup parent) {
        Viewview=null;

        if (convertView == null) {
            Holderholder=newHolder();
            view = View.inflate(mContext, R.layout.row_item, null);
            holder.tvtItem = (TextView) view.findViewById(R.id.Item);
            holder.tvtLitres = (TextView) view.findViewById(R.id.Litres);
            view.setTag(holder);
        } else {
            view = convertView;
        }

        Holderholder= (Holder) view.getTag();
        holder.tvtItem.setText(rowDataArrayList.get(position).getItem());
        holder.tvtLitres.setText(rowDataArrayList.get(position).getLitres());

        return view;
    }

    classHolder {
        TextView tvtItem;
        TextView tvtLitres;
    }
}

Post a Comment for "Printing Sqlite Entries Into A Listview"