本次博客来完成上次博客没有完成的项目,从数据库查询的数据显示到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 list;
public QueryAdapter(Context mContext, ArrayList 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;
}
}
然后我们还需要布局文件 来展示我们的数据
<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 query(String _id){
ArrayList list = new ArrayList();
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 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案例。