运用按钮点击事件让list动态获取sqllite数据(Android学习笔记2)

 

1.ListView在使用Adapter适配器时,在主函数默认加载静态的数据,如果想用点击事件来增加数据行将无显示,下面我们用一个点击事件举例

代码演示

b_1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
    StuDBHelper helper=new StuDBHelper(MainActivity.this,"stu_db",null,1);
    SQLiteDatabase db=helper.getReadableDatabase();
     Cursor cursor=db.query("stu_table",new String[]        
     {"id","sname","date"},null,null,null,null,null);
        while (cursor.moveToNext()) {
           String name = cursor.getString(cursor.getColumnIndex("sname"));
           String time= cursor.getString(cursor.getColumnIndex("date"));
           PanDuan panDuan=new PanDuan(name,time);
           list.add(panDuan);
                }
               db.close();
            }
        });

效果演示

这里我们点击按钮,listview没有子布局出现

2.这时我们可以在Adapter写一个方法

public class Adapter extends ArrayAdapter {
    private int Getid;
    private Holder holder;
    private List<PanDuan> list;  //这个是重点,一定要设置个List成员变量
    public Adapter(@NonNull Context context, int resource, @NonNull List<PanDuan> objects) {
        super(context, resource, objects);
        Getid=resource;
        list=objects;       //获取到MainActivity的list子布局内容
    }


    public void add(PanDuan panDuan){
        list.add(panDuan);
        notifyDataSetChanged();    //动态刷新listview列表
    }

3.定义一个泛型获取sqllite数据库的中转站 

public class PanDuan {
    String value;
    String valuetime;
    public PanDuan(String value,String valuetime){
        this.value=value;
        this.valuetime=valuetime;

    }
    public String getString(){
        return value;
    }
    public String getStringtime(){
        return valuetime;
    }
}

4.在主函数中的点击事件调用add方法

        list_1.setAdapter(adapter);
        StuDBHelper helper=new StuDBHelper(MainActivity.this,"stu_db",null,1);
        SQLiteDatabase db=helper.getReadableDatabase();
        db=helper.getWritableDatabase();
        String sql="insert into stu_table(id,sname) values(1,'张三')";
        db.execSQL(sql);
        b_1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                StuDBHelper helper=new StuDBHelper(MainActivity.this,"stu_db",null,1);
                SQLiteDatabase db=helper.getReadableDatabase();
                Cursor cursor=db.query("stu_table",new String[]{"id","sname","date"},null,null,null,null,null);
                while (cursor.moveToNext()) {
                   String name = cursor.getString(cursor.getColumnIndex("sname"));
                   String time= cursor.getString(cursor.getColumnIndex("date"));
                    PanDuan panDuan=new PanDuan(name,time);
                    adapter.add(panDuan);
                }
                db.close();
            }
        });

    }

效果演示(此时我们可以动态获取到sqllite值)

52c58a44be46cb7b2e1a4ef3d

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值