我正在编写我的第一个 android 应用程序并来自 iOS 世界。我有一个相当大的查询(约 100k+ 行),我想通过滚动显示在表格视图中。
当我在 iPhone 应用程序中构建同样的功能时,他们的 tableview 版本可以自动处理屏幕上的行。这使得显示器很容易开始工作。
从我所见,看来 android tableview 正在加载整个结果,并且速度大大减慢。
android tableview 类是否有任何内置功能可以实现某种形式的“延迟加载”,还是我必须在查询中编写一些处理程序和限制?
例如伪代码:
// Event Method:
// tableview "onscroll"
// get current table view index
// query DB with limit "Number of rows to display", Offset firstRowOnScreen
// display each of the values in this "subset"
目前显示代码为:
EditText editText = (EditText) findViewById(R.id.lookupFoodInfo);
String message = editText.getText().toString();
android.util.Log.i("FOOO", message);
String where = "";
if (message.trim() != "") {
where = "WHERE Long_Desc LIKE '%"+message.trim()+"%'";
}
String sql = " SELECT bt.Long_Desc " +
" FROM BIG_TABLE bt INNER JOIN OTHER_TABLE ot ON bt.id = ot.fk_id " +
where +
" ORDER BY ot.value, bt.long_desc ASC";
Cursor c = sqdb.rawQuery(sql, null);
if (c != null) {
c.moveToFirst();
while (c.isAfterLast() == false)
{
String data = c.getString(c.getColumnIndex("Long_Desc"));
TableRow row = new TableRow(getApplicationContext());
row.setLayoutParams(new LayoutParams(
LayoutParams.WRAP_CONTENT));
TextView b3=new TextView(this);
b3.setText(data);
b3.setTextColor(Color.BLUE);
b3.setTextSize(25);
row.addView(b3);
table.addView(row);
c.moveToNext();
}
}
c.close();
sqdb.close();
myDbHelper.close();
iOS中非常相似的东西就像闪电一样运行。