以下版本會自我更新。
編譯“com . Android . support:app compat-V7:21 . 0 . 0”
編譯“com . Android . support:recycler view-V7:21 . 0 . 0”
編譯“com . Android . support:cardview-V7:21 . 0 . 0”
編譯“com . Android . support:support-v4:21 . 0 . 0”
有待解決的問題
[x]下拉刷新
[x]自動裝載
[x]網絡請求異步加載
技術處理
下拉以刷新
采用安卓系統。support . v4 . widget . swiperefreshlayout來實現。
具體可以搜索這個類。根據官方文件,布局如下。
& lt查看xmlns:Android = "/apk/RES/Android "
Android:id = " @+id/swipeRefreshLayout "
class = " Android . support . v4 . widget . swiperefreshlayout "
Android:layout _ width = " match _ parent "
Android:layout _ height = " match _ parent " & gt;
& lt查看xmlns:Android = "/apk/RES/Android "
android:id="@+id/recylerView "
class = " Android . support . V7 . widget . recycle view "
Android:layout _ width = " wrap _ content "
Android:layout _ height = " wrap _ content " & gt;& lt/view & gt;
& lt/view & gt;
然後為swipeRefreshLayout設置監視。
swipeRefreshLayout . setonrefresh listener(新的SwipeRefreshLayout。OnRefreshListener() {
@覆蓋
public void onRefresh() {
如果(正在刷新){
Log.d(標簽,“忽略手動更新!”);
}否則{
load page();
}
}
});
半自動的
recycle view是新生事物,擴展方找不到endless-recycle view這樣的開源神器,只好自己找方法。和ListView壹樣,他們還是重寫了OnScrollListener的方法。
recyclerView . setonscrolllistener(新recycler view。onscrollistener(){
@覆蓋
公共void on scrolled(RecyclerView RecyclerView,int dx,int dy) {
super.onScrolled(recyclerView,dx,dy);
int lastVisibleItem =((linearrayoutmanager)mLayoutManager)。findLastVisibleItemPosition();
int totalItemCount = mlayoutmanager . getitemcount();
//lastVisibleItem & gt;= totalItemCount-4表示其余四項自動加載,您可以自由選擇。
//dy & gt;0表示向下滑動。
if(lastVisibleItem & gt;totalItemCount-4 & amp;& ampdy & gt0) {
if(isLoadingMore){
Log.d(標簽,“忽略手動更新!”);
}否則{
load page();//這裏多線程也需要手動控制isLoadingMore。
isLoadingMore = false
}
}
}
});
如果想用GridView,可以試試這個。請註意,示例中的span_count =2。
@覆蓋
公共void on scrolled(RecyclerView RecyclerView,int dx,int dy) {
super.onScrolled(recyclerView,dx,dy);
int[]visible items = mlayoutmanager . findlastvisibleitempositions(null);
int last item = math . max(visible items[0],visible items[1]);
Log.d(標簽," visible items = "+visible items);
Log.d(標簽," last item = "+last item);
Log.d(TAG," adapter . getitem count()= "+adapter . getitem count());
if(dy & gt;0 & amp& amplastitem & gtadapter . getitemcount()-5 & amp;& amp!isLoadingMore) {
Log.d(標簽,“將加載new feeds”);
}
}
正文//布萊克斯威夫特(簡的作者)