繁体   English   中英

在Android中填充SQLite中的TextViews和Buttons

[英]Populate TextViews and Buttons from SQLite in Android

我是Android开发的新手,我对如何动态显示数据感到困惑...

我有一个RelativeLayout活动类型,其中有3个Textview,3个按钮和一个ImageView。

我想要实现的是使用SQLite数据库动态填充这些项目。

假设我进行查询并得到3行,那么它应该具有我上面提到的所有结构,但是用它们各自的数据重复3次。

作为自定义列表?

在我看过的文档中,许多人不从数据库中获取数据,而是从StringArray获取数据,其他人从数据库中获取数据但显示在列表中...

视觉上结构是这样的:

我的布局

现在,图像永远是金发碧眼的女人......但我想填写至少TextViews。 从某种意义上说,如果查询得到2行,那么你应该看到类似的东西

布局发生变化

他们会如此善意地解释我能以什么方式完成这项工作?

有几种方法可以做到这一点,但你可能想要一个带有CursorAdapter的ListView。 CursorAdaptertakes一个Cursor作为输入,并显示单个行的外观。 CursorAdapter看起来像这样:

private class SpecialCursorAdapter extends CursorAdapter {

    public SpecialCursorAdapter(Context context, Cursor c, int flags) {
        super(context, c, flags);
        //Any other major setup needs to happen here.
    }

    @Override
    public void bindView(View v, Context context, Cursor cursor) {
        //Take the view as given in newView, and populate it with the dat afrom cursor.
    }

    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        LinearLayout row = (LinearLayout) mInflater.inflate(
                R.layout.data_row, parent, false);
        //Inflate the row
        return row;
    }

}

Cursor填充了标准查询,有足够的资源如何做到这一点。 您从膨胀的XML代码中获取ListView指针,并执行以下操作:

ListView listvew=...;
Cursor cursoer=...;
SpecialCursorAdapter adapter=new SpecialCursorAdapter(this,cursor,0);
listview.setAdpater(adapater);

我经常将它用于这样的非常大的数据集,并且它运行良好。

ListView是这种情况的最佳选择,您只需要为listview创建自己的自定义适配器。

还要为数据创建数据结构并将它们放入列表并将其发送到Adapter,然后在适配器中的getView()方法中处理它。

创建包含按钮,imageview和textview的列表项布局,并在自定义适配器中使用它。

class MyData{
   String someText;
   String someText2;
   String buttonText;
}

List<MyData> list = new ArrayList<MyData>();

public class MyAdapter extends BaseAdapter{

   public MyAdapter(Context c, List<MyData> list){
   }


   @Override
   public View getView(int position, View convertView, ViewGroup parent) {
       // inflate your custom list item layout and put your data
   }
}

样本在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM