以下代码是返回一个字符串,用于在显示活动的文本视图中打印条目,但是它通过一次发送所有条目来实现,因此我无法一次处理一个。
这是数据库中用于返回数据的函数。
public String getData() {
String[] columns = new String[] { KEY_ROWID, KEY_NAME, KEY_DATE,
KEY_MONTH, KEY_YEAR };
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null,
null, null);
String result = "";
// int iRow = c.getColumnIndex(KEY_ROWID);
int iName = c.getColumnIndex(KEY_NAME);
int iDate = c.getColumnIndex(KEY_DATE);
int iMonth = c.getColumnIndex(KEY_MONTH);
int iYear = c.getColumnIndex(KEY_YEAR);
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext())
{
result = result + " " + c.getString(iName) + "\t\t"
+ c.getString(iDate) + "\t\t" + c.getString(iMonth)+ "\t\t" + c.getString(iYear) + "\n";
}
return result;
}
这是在文本视图中打印条目的类:
public class DBView extends Activity {
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dbview);
tv = (TextView) findViewById(R.id.SQLinfo);
DataBaseClass info = new DataBaseClass(this);
info.open();
String data = info.getData();
info.close();
tv.setText(data);
}
}
我要做的是根据数据库中的条目数制作列表视图。例如,如果只有一个条目,则只生成一个包含姓名,日期,月份和列表的列表项。年。我尝试使用字符串适配器和列表适配器,但无法使它们工作。
答案 0 :(得分:1)
这应该有效
public ArrayList<String> getData() {
String[] columns = new String[] { KEY_ROWID, KEY_NAME, KEY_DATE,
KEY_MONTH, KEY_YEAR };
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null,
null, null);
String result = "";
// int iRow = c.getColumnIndex(KEY_ROWID);
int iName = c.getColumnIndex(KEY_NAME);
int iDate = c.getColumnIndex(KEY_DATE);
int iMonth = c.getColumnIndex(KEY_MONTH);
int iYear = c.getColumnIndex(KEY_YEAR);
ArrayList<String> string_array = new ArrayList<String>();
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext())
{
result = c.getString(iName) + "\t\t"
+ c.getString(iDate) + "\t\t" + c.getString(iMonth)+ "\t\t" + c.getString(iYear) + "\n";
string_array.add(result);
}
return string_array;
}
和..
public class DBView extends Activity {
ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dbview);
lv = (ListView) findViewById(R.id.your_listview_id);
DataBaseClass info = new DataBaseClass(this);
info.open();
ArrayList<String> data = info.getData();
info.close();
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, data);
lv.setAdapter(arrayAdapter);
}
}
答案 1 :(得分:0)
您的代码将仅返回数据库中的最后一个条目(无论您是否循环遍历游标,它都将返回最后一个结果)。您可以使用SimpleCursorAdapter
(指定列和TextViews
来填充列)。查看此示例:
String[] columns = new String[] { KEY_ROWID, KEY_NAME, KEY_DATE,
KEY_MONTH, KEY_YEAR };
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null,
null, null);
String result = "";
SimpleCursorAdapter adap=new SimpleCursorAdapter (getApplicationContext, /*create layout with 4 TextViews*/, c, new String[] { KEY_ROWID, KEY_NAME, KEY_DATE,
KEY_MONTH, KEY_YEAR }, int[] /*ids of the 5 TextViews from the layout part in an int[]*/);
然后创建一个ListView
来显示您的数据:
ListView lv=(ListView) findViewById(/*ListView id in your main layout*/);
lv.setAdapter(adap);