我从服务器获取数据,但不知道正在获取的记录数。我在sqlite中保存数据并使用cursor显示它。我想在listview中显示最初的10条记录。在下一个按钮上单击下一步,10个记录应显示在同一列表视图中,依此类推。请建议我一个方法。
代码:
runOnUiThread(new Runnable() {
@Override
public void run() {
//stuff that updates ui
/**
* Updating parsed JSON data into ListView
* */
disp();
}
});
public void disp() {
try {
Cursor c;
String sql = "select * from CurrentAffairs LIMIT 10";
c = sdb.rawQuery(sql, null);
int rowCount=c.getCount();
Constants.i=rowCount;
if (c != null) {
// if (c.moveToNext()) {
while (c.moveToNext()) {
String message = c.getString(c.getColumnIndex("message"));
HashMap<String, String> map = new HashMap<String, String>();
// adding each child node to HashMap key =>
// value
map.put(TAG_MESSAGE, message);
result.add(message);
}// while(c.moveToNext());
}
} catch (Exception e) {
// TODO: handle exception
Log.i("In Banking economics", "Error-" + e.toString());
e.printStackTrace();
}
//ListAdapter adapter = new SimpleAdapter(Banking_Economics.this, result,R.layout.list_item, new String[] { TAG_MESSAGE },new int[] { R.id.textView1 });
ListAdapter adapter=new ArrayAdapter<String>(this, R.layout.list_item,R.id.textView1, result);
setListAdapter(adapter);
// selecting single ListView item
lv = getListView();
// Launching new screen on Selecting Single ListItem
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// getting values from selected ListItem
String message = ((TextView) view.findViewById(R.id.textView1))
.getText().toString();
// Starting new intent
Intent in = new Intent(getApplicationContext(), News.class);
in.putExtra(TAG_MESSAGE, message);
startActivity(in);
}
});
}
我尝试过每10条记录使用单独的arraylists但是由于记录的数量不知道它不起作用。 此外,我不知道分页,所以不能使用它。 任何帮助表示赞赏
注意:来自服务器的数据每天更新,并添加新记录。我想在第一次加载listview时显示这些新记录。
答案 0 :(得分:1)
创建一个int变量,并在按钮单击时将其递增10。 如果要显示最近的行参考 this回答。
答案 1 :(得分:0)
您可以使用sqlite select query check this question中的限制和偏移来管理分页 修改检查this tutorial
答案 2 :(得分:0)
代码变更:
public int i=10,j=0;
case R.id.imageButton1:
i=i+10;
j=j+10;
((ArrayAdapter<String>)lv.getAdapter()).clear();
((BaseAdapter)lv.getAdapter()).notifyDataSetChanged();
disp();
break;
case R.id.imageButton2:
if(i!=10){
i=i-10;
j=j-10;
}
else{
ib2.setEnabled(false);
}
((ArrayAdapter<String>)lv.getAdapter()).clear();
((BaseAdapter)lv.getAdapter()).notifyDataSetChanged();
disp();
break;
String sql = "select * from CurrentAffairs LIMIT "+i+" OFFSET "+j;
这对我有用。希望它也会帮助其他人。