如何在Android中的Listview中显示特定数量的记录

时间:2015-07-09 09:51:00

标签: android sqlite listview

我从服务器获取数据,但不知道正在获取的记录数。我在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时显示这些新记录。

3 个答案:

答案 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;

这对我有用。希望它也会帮助其他人。