且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Android中大数据加载中的分页listview

更新时间:2022-05-07 03:28:56

只需将适配器作为类变量并在onCreate(..)中设置适配器 在到达ListView的末尾并更新列表视图时,只需清除my_array.clear();,然后向其中添加数据并通知Listview适配器.

Just take the adapter as a class variable and set the adapter in onCreate(..) and when you are reaching the end of ListView and updating the list view, just clear the my_array.clear(); then add data to it and notify the Listview adaapter.

示例代码:

Class myclass extends Activity
{
 private ListviewAdapter adapter;
 private ArrayList<String> my_array;

 onCreate(...)
  {
   //Fill Values in the Array
   my_array.add(...);
   adapter = new ListviewAdapter(MainActivity.this, my_array);
   list.setAdapter(adapter);
   ....

   //In your onScrollListener() of the list make the following changes
   list.setOnScrollListener(new OnScrollListener() {
    @Override
    public void onScrollStateChanged(AbsListView arg0, int arg1) {

    }
    @Override
    public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, final int totalItemCount) {
        if (totalItemCount > 0)
        {
            int lastInScreen = firstVisibleItem + visibleItemCount;
            if(lastInScreen == totalItemCount)
            {
                my_array.clear();
                //Add the values in you Array here.
                my_array.add(....)
                //Notify the adapter about the data set change.
                adapter.notifyDatasetChanged();
            }
        }
    }
});

编辑
对于列表视图内未检测到的按钮单击"问题.
只需在自定义列表视图的布局文件中设置onClick属性即可.

EDIT
For your undetected Button Clicks problem inside the list view.
Just set onClick attribute in the custom listview's layout file.

<Button
        ......
        android:onClick="btnRemoveClick"
        />

并在您的onClick方法中,执行点击事件.

and in your onClick method, do the Implementation of click events.

public void btnRemoveClick(View v)
{
    //get the position of the button here
    final int position = listviewItem.getPositionForView((View) v.getParent()); 
}

P.S:您需要将ListView对象设置为类变量.

P.S: you need to set the ListView object as a class variable.