From 46d3fe82a77654899c02dfb29f8a5cfd2938ba9e Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期六, 03 四月 2021 18:55:39 +0800 Subject: [PATCH] 首页推荐瀑布流加翻页 --- BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendFragment.java | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 51 insertions(+), 6 deletions(-) diff --git a/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendFragment.java b/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendFragment.java index dd7cee1..24a105e 100644 --- a/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendFragment.java +++ b/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendFragment.java @@ -16,6 +16,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; +import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; @@ -186,6 +187,8 @@ private LinearLayout ll_ad_containner; private RatioLayout rl_recommend_top; private CirclePageIndicator indicator_recommend; + private boolean isLoad; + private View loading; private void initHomeAd() { View view = LayoutInflater.from(getContext()).inflate(R.layout.recommend_top, null); @@ -247,6 +250,38 @@ decoration.setSize(DimenUtils.dip2px(rv_recommend.getContext(), 0)); rv_recommend.addItemDecoration(decoration); + loading = LayoutInflater.from(getContext()).inflate(R.layout.item_loading, null); + loading.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); + loading.setVisibility(View.GONE); + + + rv_recommend.addOnScrollListener(new RecyclerView.OnScrollListener() { + @Override + public void onScrollStateChanged(RecyclerView recyclerView, int newState) { + super.onScrollStateChanged(recyclerView, newState); + LinearLayoutManager manager = (LinearLayoutManager) recyclerView.getLayoutManager(); + int first = manager.findFirstVisibleItemPosition(); + int last = manager.findLastVisibleItemPosition(); + int total = manager.getItemCount(); + if (newState == RecyclerView.SCROLL_STATE_IDLE) { + if ((!isLoad) && last == total - 1 && mHomeTypes.size() < homeTypeCount) { + if (mHomeTypes != null && mHomeTypes.size() > 0 && !rl_recommend.isRefreshing()) {//鍒楄〃涓湁鏁版嵁鎵嶈兘鍔犺浇鏇村 + homeTypePage++; + isLoad = true; + loading.setVisibility(View.VISIBLE); + getHomeType(homeTypePage); + } + } + } + } + + @Override + public void onScrolled(RecyclerView recyclerView, int dx, final int dy) { + super.onScrolled(recyclerView, dx, dy); + } + }); + + rl_recommend.setClickable(false); iv_right_ad = contentView.findViewById(R.id.iv_right_ad); @@ -276,6 +311,8 @@ mHomeTypes = new ArrayList(); mRecommendNewAdapter = new RecommendNewAdapter(getActivity(), mHomeTypes, ScreenUtils.getScreenWidth(getContext())); rv_recommend.setAdapter(mRecommendNewAdapter); + + mRecommendNewAdapter.setFooterView(loading); setAdContent(); initHomeAd(); //鍔犺浇缂撳瓨鏁版嵁 @@ -661,7 +698,8 @@ @Override public void onFinish() { - getHomeType(); + homeTypePage = 1; + getHomeType(homeTypePage); } }); } @@ -670,12 +708,14 @@ * 鑾峰彇褰辩墖鏁翠綋淇℃伅 */ - private void getHomeType() { + private int homeTypePage; + private int homeTypeCount; + private void getHomeType(int page) { SharedPreferences preferences = context.getSharedPreferences( "user", Context.MODE_PRIVATE); String uid = preferences.getString("uid", ""); - BeibeiVideoAPI.getHomeType(context, uid, type.getId(), type.getDataKey(), + BeibeiVideoAPI.getHomeType(context, uid, type.getId(), type.getDataKey(), page, 4, new BasicTextHttpResponseHandler() { @Override @@ -689,6 +729,7 @@ List<HomeType> homeTypes = new ArrayList<HomeType>(); JSONArray array = jsonObject.getJSONObject("Data") .getJSONArray("data"); + homeTypeCount = jsonObject.getJSONObject("Data").optInt("count"); for (int i = 0; i < array.length(); i++) { HomeType type = new HomeType(); JSONObject obj = array.optJSONObject(i); @@ -743,12 +784,14 @@ } //娓呴櫎鑰佹暟鎹� - mHomeTypes.clear(); - mRecommendNewAdapter.removeAllAd(); + if (page == 1) { + mHomeTypes.clear(); + mRecommendNewAdapter.removeAllAd(); + } mHomeTypes.addAll(homeTypes); //濉厖鏁版嵁 setAdContent(); - if (position == 0) { + if (position == 0 && page == 1) { DiskLruCache.Editor editor = cache .edit(getKey("getHomeType") + type.getId()); editor.set(0, jsonObject.getJSONObject("Data") @@ -761,7 +804,9 @@ @Override public void onFinish() { + isLoad = false; rl_recommend.setRefreshing(false); + loading.setVisibility(View.GONE); try { } catch (Exception e) { e.printStackTrace(); -- Gitblit v1.8.0