EditText+ListView实现从动态显示数据库数据

原创 2015年11月17日 21:54:58

先来看效果图:
这里写图片描述
这是显示数据库里的数据
当查找数据时,根据输入的字母在listView中动态显示查找结果
当输入a后,动态显示数据库中有a的数据
这里写图片描述

以下为实现代码:
首先建立数据库:

/**
 * Created by mhwang on 2015/11/17.
 */
public class DBHelper extends SQLiteOpenHelper {
    final String CREATE_TABLE = "create table book (" +
            "id integer primary key autoincrement," +
            "author text," +
            "price real)";
    private Context mContext;
    public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
        mContext = context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_TABLE);
    }

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

    }
}

为了方便,建立一个操作数据库的类:

/**
 * Created by mhwang on 2015/11/17.
 */
public class DBOperate {
    public static DBOperate dbOperate = null;
    private DBHelper helper;
    private SQLiteDatabase sb;
    private final String TABLE_NAME = "book";
    public DBOperate(Context context){
        helper = new DBHelper(context,"book.db",null,1);
        sb = helper.getReadableDatabase();
        insertData("lining","12.3");
        insertData("wanghong","11");
        insertData("xiaoming","33");
        insertData("liuhong","22");
    }
    //获取数据库操作实例
    public static DBOperate getDBInstance(Context context){
        if(dbOperate == null){
            dbOperate = new DBOperate(context);
        }
        return dbOperate;
    }
    //读取数据库数据
    public void readData(List<String> list){
        Cursor cursor = sb.query(TABLE_NAME, null, null, null, null, null, null);
        while (cursor.moveToNext()){
            String bookAuthor = cursor.getString(cursor.getColumnIndex("author"));
            list.add(bookAuthor);
        }
        cursor.close();
    }
    //根据传入的条件查询
    public void readData(List<String> list,String s){
        String sql = "select * from book where author like"+"'%"+s+"%'";
        list.clear();
        Cursor cursor = sb.rawQuery(sql, null);
        while (cursor.moveToNext()){
            String bookAuthor = cursor.getString(cursor.getColumnIndex("author"));
            list.add(bookAuthor);
        }
        cursor.close();
    }
    //插入数据
    public void insertData(String author,String real){
        sb.execSQL("insert into book(author,price) values(?,?)",new String[]{author,real});
    }

然后在mainActivity中绑定适配器与ListView

public class MainActivity extends AppCompatActivity {
    ListView listView;
    List<String> list;
    ArrayAdapter<String> adapter;
    EditText editText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView = (ListView)findViewById(R.id.listView);
        editText = (EditText)findViewById(R.id.etSearch);
        list = new ArrayList<String>();
        //读取全部数据
        DBOperate.getDBInstance(this).readData(list);
        adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list);
        listView.setAdapter(adapter);
        //对editText进行文本改变监听
        editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                    //查询字符s所对应的作者名
                    DBOperate.getDBInstance(MainActivity.this).readData(list,s.toString());
                    adapter.notifyDataSetChanged();
            }
        });
    }
版权声明:本文为博主原创文章,未经博主允许不得转载。

Android-使用ListView把SQLite中的数据显示至屏幕

结果图: 步骤: 1.向数据库中插入数据 2.从数据库中取出数据放在ArrayList中; 3.将ArrayList中的数据显示在ListView中; 布局文件: ...
  • u014657752
  • u014657752
  • 2015年08月15日 15:33
  • 4862

使用ListView进行不同布局ItemView的显示

实现的界面效果如下图所示,没有可以进行布局上的调整,所以看起来丑一点。         上图在一个ListView中显示了两种不同的ItemView,主要是使用BaseAdapter中的...
  • hhzz1504042001
  • hhzz1504042001
  • 2014年12月15日 15:49
  • 4328

ListView显示数据库的数据-采用自定义布局-向上滑动可以加载更多数据

本案例使用自定义布局实现在ListView中显示数据库的数据(用户名、手机号)的功能,ListView向上滑动可以加载更多数据。 1.user_item.xml ...
  • LeoLeoHan
  • LeoLeoHan
  • 2015年05月26日 23:28
  • 1842

Android采用ListView实现数据列表显示

要将数据库中的数据列表显示在屏幕上,我们要使用ListView这个控件,当用户从数据库中取出数据时,要将数据绑定到显示控件上,如何绑定呢,我们需要创建适配器进行绑定,创建适配器有两种方式: 第一...
  • huzhigenlaohu
  • huzhigenlaohu
  • 2014年10月05日 23:11
  • 411

今天学习了怎么读取Android数据库读取数据,用ListView将其显示出来

用ListView显示Android数据库中的数据
  • u013484740
  • u013484740
  • 2015年05月11日 18:20
  • 2874

从数据库里查询数据展示到listview上的案例

编写一个从数据库里查询数据展示到listview上的案例 运行结果:点击find按钮,会将数据库中添加的数据显示在List View上 结果如下: 创建如图所示: ...
  • lulu_wang69
  • lulu_wang69
  • 2017年05月18日 08:40
  • 1125

Android中给数据库添加EditText中内容,添加后数据为空的情况

搞了两天的代码,将EditText中内容添加至数据库,怎么都搞不定,总是
  • u011848617
  • u011848617
  • 2014年05月16日 19:50
  • 2144

从数据库中拿数据,显示到listview上

[1]创建javabean对象person,用来封装取到的数据条。 [2]再把javabean对象进行封装,获得数据集合lists [3]创建适配器MyAdepter ,继承BaseAdapter...
  • luojie140
  • luojie140
  • 2016年02月01日 16:37
  • 2989

Android采用ListView实现数据列表显示

要将数据库中的数据列表显示在屏幕上,我们要使用ListView这个控件,当用户从数据库中取出数据时,要将数据绑定到显示控件上,如何绑定呢,我们需要创建适配器进行绑定,创建适配器有两种方式: 第一种是...
  • furongkang
  • furongkang
  • 2011年09月25日 13:41
  • 72255

android listview显示数据库中内容

  • 2013年04月06日 21:07
  • 592KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:EditText+ListView实现从动态显示数据库数据
举报原因:
原因补充:

(最多只允许输入30个字)