[英]Android ListView with Pull to Refresh & Load more - that is not deprecated!(?)
我試圖找到一個很好的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());
}
}
}
};
您可以修改此代碼以適合您的要求。 此類使用SwipeRefreshLayout
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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.