我是Android开发的新手,我对如何动态显示数据感到困惑......
我有一个RelativeLayout活动类型,其中有3个Textview,3个按钮和一个ImageView。
我想要实现的是使用SQLite数据库动态填充这些项目。
假设我做了一个查询而且我有3行,那么它应该具有我上面提到的所有结构,但是用它们各自的数据重复了3次。
作为自定义列表?
在我看过的文档中,许多人不从数据库中获取数据,而是从StringArray获取数据,其他人从数据库中获取数据但显示在列表中......
视觉上结构是这样的:
现在,形象永远是金发碧眼的女人...... 但我想填写至少TextViews。 从某种意义上说,如果查询得到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