BuWanVideo/res/layout/item_loading.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
BuWanVideo/res/values/colors.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
BuWanVideo/src/com/weikou/beibeivideo/BeibeiVideoAPI.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendFragment.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendNewAdapter.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
BuWanVideo/res/layout/item_loading.xml
@@ -5,6 +5,7 @@ android:gravity="center"> <ProgressBar style="@style/Widget.AppCompat.ProgressBar" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal"></ProgressBar> BuWanVideo/res/values/colors.xml
@@ -43,9 +43,9 @@ <color name="colorPrimary">#3F51B5</color> <color name="colorPrimaryDark">#303F9F</color> <color name="colorAccent">#0052f6</color> <color name="colorAccent">#159FFF</color> <color name="colorLoading">#0052f6</color> <color name="colorLoading">#159FFF</color> <color name="videoTitle">#DCDCDC</color> BuWanVideo/src/com/weikou/beibeivideo/BeibeiVideoAPI.java
@@ -834,12 +834,14 @@ } public static void getHomeType(Context context, String uid, String vtid, String dataKey, public static void getHomeType(Context context, String uid, String vtid, String dataKey, int page, int pageSize, ResponseHandlerInterface handler) { LinkedHashMap<String, String> params = new LinkedHashMap<String, String>(); params.put("Method", "getHomeType"); params.put("Method", "getHomeTypeNew"); params.put("Uid", uid); params.put("Vtid", vtid); params.put("Page", page + ""); params.put("PageSize", pageSize + ""); if (dataKey != null) { params.put("DataKey", dataKey); } 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 @@ } //清除老数据 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(); BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendNewAdapter.java
@@ -72,15 +72,21 @@ private TreeSet mADSet = new TreeSet(); public final int TYPE_HEADER = 10001; public final int TYPE_FOOTER = 10002; private Gson gson = new GsonBuilder().setVersion(1.0).setFieldNamingPolicy( FieldNamingPolicy.UPPER_CAMEL_CASE) .create(); private View headerView; private View footerView; public void setHeaderView(View view) { this.headerView = view; } public void setFooterView(View view) { this.footerView = view; } public RecommendNewAdapter(Activity context, List contentList, int recyclerViewWidth) { @@ -156,6 +162,8 @@ switch (viewType) { case TYPE_HEADER: return new HeaderViewHolder(headerView); case TYPE_FOOTER: return new HeaderViewHolder(footerView); case RecommendContent.TYPE_HOMETYPE: return new HomeTypeHolder(inflater.inflate(R.layout.item_recommend_home_type, null, false), new RecyclerView.RecycledViewPool()); case RecommendContent.TYPE_AD: @@ -187,6 +195,7 @@ if (homeType.getVideoInfoList() == null) { homeType.setVideoInfoList(new ArrayList<>()); } ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); holder.view.setLayoutParams(params); @@ -228,7 +237,11 @@ homeType.getVideoInfoList().add(homeType.getHomeVideoList().get(j).getVideo()); } //隐藏 if (homeType.getVideoInfoList() != null && homeType.getVideoInfoList().size() > 0) holder.view.setVisibility(View.VISIBLE); else holder.view.setVisibility(View.GONE); VideoRecommendAdapter adapter = null; @@ -401,6 +414,8 @@ int count = this.contentList.size(); if (headerView != null) count++; if (footerView != null) count++; return count; } @@ -420,10 +435,15 @@ if (headerView != null) position--; if(position>=contentList.size()) return TYPE_FOOTER; if (contentList.get(position) instanceof HomeType) return RecommendContent.TYPE_HOMETYPE; else return RecommendContent.TYPE_AD; } class HomeTypeHolder extends RecyclerView.ViewHolder {