Android ListView,支持拉式刷新&;加载更多-这不是不推荐的!(?)

Android ListView,支持拉式刷新&;加载更多-这不是不推荐的!(?),android,listview,Android,Listview,我正试图找到一个好的ListView,它支持“拉到刷新”和“加载更多”,可以与gradle一起使用,可以与稍旧的API一起使用(我目前使用的“加载更多ListView”需要min API18),并且没有被弃用……我能找到的只是无人关心的弃用库。。。有什么建议吗?您可以修改此代码以满足您的要求。此类使用SwipeRefreshLayout AbsListView.OnScrollListener listenerScroll = new AbsListView.OnScrollListener()

我正试图找到一个好的ListView,它支持“拉到刷新”和“加载更多”,可以与gradle一起使用,可以与稍旧的API一起使用(我目前使用的“加载更多ListView”需要min API18),并且没有被弃用……我能找到的只是无人关心的弃用库。。。有什么建议吗?

您可以修改此代码以满足您的要求。此类使用SwipeRefreshLayout

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);
  }
}
public类MainActivity扩展AppCompatActivity实现SwipeRefreshLayout.OnRefreshListener{
私有列表视图;
私人SwipeRefreshLayout mSwipeRefreshLayout;
私人名单;
私有字符串适配器mStringAdapter;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mObjectList=newarraylist();
添加(“瑞典”);
mObjectList.add(“丹麦”);
mObjectList.add(“芬兰”);
添加(“挪威”);
mObjectList.add(“冰岛”);
mListView=(ListView)findViewById(R.id.ListView);
mSwipeRefreshLayout=(SwipeRefreshLayout)findViewById(R.id.swipe\u refresh\u layout);
mStringAdapter=新的StringAdapter(MainActivity.this,mObjectList);
setAdapter(mStringAdapter);
mSwipeRefreshLayout.setOnRefreshListener(此);
mSwipeRefreshLayout.setDistanceToTriggerSync(30);
mSwipeRefreshLayout.setSize(SwipeRefreshLayout.DEFAULT);
}
Handler mHandler=新处理程序(){
@凌驾
公共无效handleMessage(消息消息消息){
//超级handleMessage(msg);
//将新数据源添加到适配器
mStringAdapter=新的StringAdapter(MainActivity.this,mObjectList);
setAdapter(mStringAdapter);
mSwipeRefreshLayout.postDelayed(新的Runnable(){
@凌驾
公开募捐{
mSwipeRefreshLayout.setRefresh(false);
}
}, 1000);
}
};
@凌驾
公共void onRefresh(){
mSwipeRefreshLayout.postDelayed(新的Runnable(){
@凌驾
公开募捐{
mSwipeRefreshLayout.setRefreshing(true);
mHandler.sendEmptyMessage(0);
}
}, 1000);
}
}

您可以修改此代码以满足您的要求。此类使用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);
  }
}
public类MainActivity扩展AppCompatActivity实现SwipeRefreshLayout.OnRefreshListener{
私有列表视图;
私人SwipeRefreshLayout mSwipeRefreshLayout;
私人名单;
私有字符串适配器mStringAdapter;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mObjectList=newarraylist();
添加(“瑞典”);
mObjectList.add(“丹麦”);
mObjectList.add(“芬兰”);
添加(“挪威”);
mObjectList.add(“冰岛”);
mListView=(ListView)findViewById(R.id.ListView);
mSwipeRefreshLayout=(SwipeRefreshLayout)findViewById(R.id.swipe\u refresh\u layout);
mStringAdapter=新的StringAdapter(MainActivity.this,mObjectList);
setAdapter(mStringAdapter);
mSwipeRefreshLayout.setOnRefreshListener(此);
mSwipeRefreshLayout.setDistanceToTriggerSync(30);
mSwipeRefreshLayout.setSize(SwipeRefreshLayout.DEFAULT);
}
Handler mHandler=新处理程序(){
@凌驾
公共无效handleMessage(消息消息消息){
//超级handleMessage(msg);
//将新数据源添加到适配器
mStringAdapter=新的StringAdapter(MainActivity.this,mObjectList);
setAdapter(mStringAdapter);
mSwipeRefreshLayout.postDelayed(新的Runnable(){
@凌驾
公开募捐{
mSwipeRefreshLayout.setRefresh(false);
}
}, 1000);
}
};
@凌驾
公共void onRefresh(){
mSwipeRefreshLayout.postDelayed(新的Runnable(){
@凌驾
公开募捐{
mSwipeRefreshLayout.setRefreshing(true);
mHandler.sendEmptyMessage(0);
}
}, 1000);
}
}

谢谢。我知道这一点,也知道如何自定义,但我希望有一个简单的解决方案,主要用于“拉到刷新”,当你拉下来时,它会显示一个显示“加载”或类似内容的视图。你可以使用CustomswiperFreshLayout拉到刷新。swipeView.setOnRefreshListener(新的SwipeRefreshLayout.OnRefreshListener(){@Override public void onRefresh(){Log.d(“滑动”、“刷新医生”);//停止滑动刷新swipeView.SetRefresh(false);//刷新医生列表requestPhysicianAPI(mSortBy,mIsDescending);};非常感谢。我知道这一点,也知道如何自定义,但我希望有一个简单的解决方案,主要用于“拉到刷新”,当你拉下来时,它会显示一个显示“加载”或类似内容的视图。你可以使用CustomswiperFreshLayout拉到刷新。swipeView.setOnRefreshListener(新的SwipeRefreshLayout.OnRefreshListener(){@Override public void onRefresh(){Log.d(“滑动”、“刷新医生”);//停止滑动刷新swipeView.SetRefresh(false);//刷新医生列表requestPhysicianAPI(mSortBy,mIsDescending);};