Android ListView with Pull to Refresh & Load More - 这没有被弃用!(?)



我正在尝试找到一个好的ListView,它支持"拉取刷新"和"加载更多",适用于gradle,适用于较旧的API(我目前使用需要最小API18的"LoadMoreListView"),并且没有被弃用...我能找到的都是没人再关心的弃用库......有什么建议吗?

AbsListView.OnScrollListener listenerScroll = new AbsListView.OnScrollListener() {
    @Override
    public void onScrollStateChanged(AbsListView view, int scrollState) {
        Log.d("TAG", "onScrollStateChanged");
    }
    @Override
    public void onScroll(AbsListView view, int firstVisibleItem,
                         int visibleItemCount, int totalItemCount) {
        boolean loadMore = firstVisibleItem + visibleItemCount >= totalItemCount;
        Log.d("TAG", "onScroll " + loadMore + " " + totalItemCount + " ");
        if (loadMore && !mIsLoading && !isLoadFinish) {
            if (mTrackDataValues != null && mTrackDataValues.size() > 0) {
                callAPIHistory(mTrackDataValues.get(mTrackDataValues.size() - 1).getDateFor());
            }
        }
    }
};

您可以修改此代码以满足您的要求。此类使用滑动刷新布局

public class MainActivity extends AppCompatActivity implements SwipeRefreshLayout.OnRefreshListener{
private ListView mListView;
private SwipeRefreshLayout mSwipeRefreshLayout;
private List<String> mObjectList;
private StringAdapter mStringAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mObjectList = new ArrayList<String>();
    mObjectList.add("Sweden");
    mObjectList.add("Denmark");
    mObjectList.add("Finland");
    mObjectList.add("Norway");
    mObjectList.add("Iceland");
    mListView = (ListView)findViewById(R.id.listView);
    mSwipeRefreshLayout = (SwipeRefreshLayout)findViewById(R.id.swipe_refresh_layout);
    mStringAdapter = new StringAdapter(MainActivity.this, mObjectList);
    mListView.setAdapter(mStringAdapter);
    mSwipeRefreshLayout.setOnRefreshListener(this);
    mSwipeRefreshLayout.setDistanceToTriggerSync(30);
    mSwipeRefreshLayout.setSize(SwipeRefreshLayout.DEFAULT);
}
Handler mHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        //super.handleMessage(msg);
        // add new data source to the adapter
        mStringAdapter = new StringAdapter(MainActivity.this, mObjectList);
        mListView.setAdapter(mStringAdapter);
        mSwipeRefreshLayout.postDelayed(new Runnable() {
            @Override
            public void run() {
                mSwipeRefreshLayout.setRefreshing(false);
            }
        }, 1000);
    }
};
@Override
public void onRefresh() {
    mSwipeRefreshLayout.postDelayed(new Runnable() {
        @Override
        public void run() {
            mSwipeRefreshLayout.setRefreshing(true);
            mHandler.sendEmptyMessage(0);
        }
    }, 1000);
  }
}

最新更新