在listView的滚动端加载接下来的10行

时间:2015-10-10 15:52:43

标签: android sqlite listview android-listview

假设我的sqlite数据库中有500个数据,并且可以轻松加载数据,我可以从1到10和10到20加载数据,依此类推每次到达listview的结尾时,

这是我的代码
在我的主xml上我有

<ListView
        android:id="@+id/list_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
/>

和我的自定义列表项

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="5dp" >
    <TextView
       android:id="@+id/KeyWord"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/thumbnail"
        android:layout_toRightOf="@+id/thumbnail"
        android:text="@string/sample"
        android:textColor="@color/grey_blue"
        android:typeface="serif"
        android:textSize="18sp"
        android:textStyle="bold"
        android:shadowColor="@color/red_minus"
        android:layout_marginTop="5dp"/>

    <TextView
        android:id="@+id/thisSub"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/thisWord"
        android:layout_below="@+id/thisWord"
        android:text="@string/sample"
        android:textColor="#343434"
        android:typeface="serif"
        android:textSize="16sp" />
</RelativeLayout>

以及我如何将前10行填充到我的MainActivity上的listView

private void displayListView(final String SpinnerData) {
        Cursor cursor = null;
        try {
            cursor = dbHelper.fetchAllData(SpinnerData);
        } catch (Exception e) {
            Toast.makeText(getApplicationContext(), "EER " + e, Toast.LENGTH_LONG).show();
        }
        String[] columns = new String[]{
                DbAdapter.KEY_WORD, DbAdapter.KEY_PRO
        };
        int[] to = new int[]{
                R.id.KeyWord, R.id.thisSub
        };
        dataAdapter = new SimpleCursorAdapter(getApplicationContext(), R.layout.list_item, cursor, columns, to, 0);
        final ListView listView = (ListView) findViewById(R.id.list_view);
        listView.setAdapter(dataAdapter);
        listView.setOnScrollListener(new AbsListView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {

            }
            @Override
            public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
                final int lastItem = firstVisibleItem + visibleItemCount;
                if(lastItem == totalItemCount){
                   // here i want to add the next 10 rows on scrollend
                }
            }
        });
    }

在我的DbAdapter类上使用我的dbHelper

public Cursor fetchAllData(String baseFrom){                                    
   Cursor mCursor = null;                                                        
    if(baseFrom == "ALL"){                                                       
        mCursor = mDb.query(true,SQLITE_TABLE, new String[]{                     
                KEY_ROWID, KEY_PRO, KEY_WORD},         
                null, null, null, null, KEY_WORD, "10");                         
    }else{                                                                       
        mCursor = mDb.query(true,SQLITE_TABLE, new String[]{                     
                KEY_ROWID, KEY_PRO, KEY_WORD},         
                KEY_FROM + " LIKE '" + baseFrom + "%'",                          
                null, null, null, KEY_WORD, "10");                               
    }                                                                                                                           
    if(mCursor != null){                                                         
        mCursor.moveToFirst();                                                   
        if (!(mCursor.moveToFirst()) || mCursor.getCount() == 0){                
            mCursor = null;                                                      
        }                                                                        
    }return mCursor;                                                             
}        

我的问题是,我不知道如何在我的listview末尾添加接下来的10行在scrollend,我只是一个新手,这是我自学的一部分。
我正在考虑使用LIMIT来获得接下来的10行。

        mCursor = mDb.query(true,SQLITE_TABLE, new String[]{                     
        KEY_ROWID, KEY_PRO, KEY_WORD},         
        KEY_FROM + " LIKE '" + baseFrom + "%'",                          
        null, null, null, KEY_WORD, "10, 20"); //Here from 10 to 20 

并将其附加到我的列表视图的末尾,但我不知道我可以编码。
任何人都可以帮我做到这一点?
我将感谢任何人的帮助。非常感谢你提前!

1 个答案:

答案 0 :(得分:0)

正如我在评论中所说,主要问题是一次按10个项目组获取数据。为此,您可以使用SORTing订单。 以下是@ SQLiteDatabase Cursor query的文档。在这种情况下,请查看参数orderBy。