admin
2021-04-03 46d3fe82a77654899c02dfb29f8a5cfd2938ba9e
首页推荐瀑布流加翻页
5个文件已修改
90 ■■■■ 已修改文件
BuWanVideo/res/layout/item_loading.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/res/values/colors.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/src/com/weikou/beibeivideo/BeibeiVideoAPI.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendFragment.java 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendNewAdapter.java 22 ●●●●● 补丁 | 查看 | 原始文档 | 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 @@
                            }
                            //清除老数据
                            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();
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());
                }
            holder.view.setVisibility(View.VISIBLE);
            //隐藏
            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 {