在Android中填充SQLite中的TextViews和Buttons

时间:2014-02-27 16:12:32

标签: java android sqlite listview

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

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

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

假设我做了一个查询而且我有3行,那么它应该具有我上面提到的所有结构,但是用它们各自的数据重复了3次。

作为自定义列表?

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

视觉上结构是这样的:

My Layout

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

这样的东西

Layout changed

他们会如此善意地解释我能以何种方式完成此任务?

2 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点,但你可能想要一个带有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);

我经常将它用于这样的非常大的数据集,并且效果很好。

答案 1 :(得分:1)

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
   }
}

示例here