Android数据库Sqlite查询显示到ListView控件

来源:互联网 发布:淘宝做分销有成功的吗 编辑:程序博客网 时间:2024/06/05 19:34

本次博客来完成上次博客没有完成的项目,从数据库查询的数据显示到listview
话不多说直接上代码
首先我们要自定义一个适配器,继承 Baseadapter 来重写里面的方法

import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;import com.example.textsql.R;import java.util.ArrayList;/** * Created by Administrator on 2017/11/6. */public class QueryAdapter extends BaseAdapter{    private  Context mContext;    private ArrayList<InfoBean> list;    public QueryAdapter(Context mContext, ArrayList<InfoBean> list) {        this.mContext = mContext;        this.list = list;    }    @Override    public int getCount() {        return list.size();    }    @Override    public Object getItem(int position) {        return list.get(position);    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        //服用convertView        View view = null;        if(convertView!=null){            view = convertView;        }else{          view = View.inflate(mContext, R.layout.item_database,null);        }        //找到控件        TextView item_id = (TextView)view.findViewById(R.id.item_tv_id);        TextView item_tram = (TextView)view.findViewById(R.id.item_tv_tram);        TextView item_humi = (TextView)view.findViewById(R.id.item_tv_humi);        //找到内容        InfoBean infoBean = list.get(position);        //设置内容        item_id.setText(infoBean._id);        item_tram.setText(infoBean.tram);        item_humi.setText(infoBean.humi);        return view;    }}

然后我们还需要布局文件 来展示我们的数据

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:orientation="horizontal"    android:layout_height="match_parent">    <TextView        android:id="@+id/item_tv_id"        android:layout_width="0dp"        android:layout_weight="1"        android:layout_height="wrap_content" />    <TextView        android:id="@+id/item_tv_tram"        android:layout_width="0dp"        android:layout_height="wrap_content"        android:layout_weight="1" />    <TextView        android:id="@+id/item_tv_humi"        android:layout_width="0dp"        android:layout_weight="1"        android:layout_height="wrap_content" /></LinearLayout>

让后我们需要修改我们上一片博客中封装的查询方法

 public ArrayList<InfoBean> query(String _id){        ArrayList<InfoBean> list = new ArrayList<InfoBean>();        SQLiteDatabase db = dbHelperSqlite.getReadableDatabase();        Cursor cursor = db.rawQuery("select _id,tram,humi from info where _id = ?",new String[]{_id});        if(cursor != null && cursor.getCount() > 0){            //判断cursor中是否存在数据            while (cursor.moveToNext()){                InfoBean bean = new InfoBean();                bean._id = cursor.getInt(0)+"";                bean.tram = cursor.getString(1);                bean.humi = cursor.getString(2);                list.add(bean);                System.out.println("_id:"+bean._id+";name:"+bean.tram+";humi:"+bean.humi);            }            cursor.close();        }        db.close();        return list;    }

这里返回了一个arraylist集合,集合里面包含了infobean对象
我们只要把查询出来的数据添加到bean中就ok了
详见代码

我们还需要修改布局文件
添加一个listview控件,并且找到他,这个大家应该知道

<LinearLayout        android:layout_below="@+id/l1"        android:layout_width="wrap_content"        android:layout_height="wrap_content">        <ListView            android:id="@+id/listview"            android:layout_width="match_parent"            android:layout_height="match_parent">        </ListView> </LinearLayout>在mainactivity找到他

最后修改我们的查询按钮

 case R.id.rbtn4:                    //获取查询的数据                    ArrayList<InfoBean> list = infoDao.query("1");                    System.out.println(list.size()+"----");                    //封装adapter                    QueryAdapter queryadApter = new QueryAdapter(mContext,list);                    lists.setAdapter(queryadApter);                    break;

设置适配器
具体业务可以根据自己的需求来做,这里只是做一个入门,还有adapter的跟新可以使用到,notifyDataSetChanged();这个方法,当查询到某个数据到listview需要跟新时。
这里只是用到自定义适配器的普通用法,自定义适配器的傻瓜式,普通式,文艺式可已在慕课玩系统学习。下一篇继续跟新sqlite和listview案例。

阅读全文
0 0