From cbb88109494ffc7916f6639c20ce05c0cec941a9 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 07 四月 2021 15:07:45 +0800
Subject: [PATCH] 3.9.1bug修复

---
 BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/SearchResultActivity.java |  319 +++++++++++++++++++++++++++++++++-------------------
 1 files changed, 201 insertions(+), 118 deletions(-)

diff --git a/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/SearchResultActivity.java b/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/SearchResultActivity.java
index 9019582..adc22ff 100644
--- a/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/SearchResultActivity.java
+++ b/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/SearchResultActivity.java
@@ -1,11 +1,9 @@
 package com.weikou.beibeivideo.ui.recommend;
 
 import android.content.Context;
-import android.content.Intent;
 import android.content.SharedPreferences;
-import android.graphics.Color;
+import android.graphics.Typeface;
 import android.graphics.drawable.Drawable;
-import android.os.Build;
 import android.os.Bundle;
 import android.support.v4.widget.SwipeRefreshLayout;
 import android.support.v7.widget.LinearLayoutManager;
@@ -21,19 +19,11 @@
 import android.view.View.OnTouchListener;
 import android.view.ViewGroup;
 import android.view.inputmethod.EditorInfo;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemClickListener;
-import android.widget.ArrayAdapter;
-import android.widget.AutoCompleteTextView;
-import android.widget.BaseAdapter;
-import android.widget.Filter;
-import android.widget.Filterable;
-import android.widget.ImageView;
+import android.widget.EditText;
+import android.widget.FrameLayout;
 import android.widget.LinearLayout;
-import android.widget.LinearLayout.LayoutParams;
 import android.widget.ProgressBar;
 import android.widget.TextView;
-import android.widget.Toast;
 
 import com.google.gson.FieldNamingPolicy;
 import com.google.gson.Gson;
@@ -41,23 +31,27 @@
 import com.google.gson.reflect.TypeToken;
 import com.lcjian.library.util.common.SoftKeyboardUtils;
 import com.lcjian.library.util.common.StringUtils;
-import com.umeng.analytics.MobclickAgent;
+import com.qq.e.ads.cfg.VideoOption;
+import com.qq.e.ads.nativ.NativeADUnifiedListener;
+import com.qq.e.ads.nativ.NativeUnifiedAD;
+import com.qq.e.ads.nativ.NativeUnifiedADData;
+import com.qq.e.comm.util.AdError;
 import com.weikou.beibeivideo.BasicTextHttpResponseHandler;
 import com.weikou.beibeivideo.BeibeiVideoAPI;
+import com.weikou.beibeivideo.R;
 import com.weikou.beibeivideo.entity.VideoInfo;
 import com.weikou.beibeivideo.entity.VideoType;
 import com.weikou.beibeivideo.entity.ad.ExpressAdContainer;
 import com.weikou.beibeivideo.entity.video.VideoContent;
 import com.weikou.beibeivideo.ui.BaseActivity;
 import com.weikou.beibeivideo.ui.video.SearchResultAdapter;
-import com.weikou.beibeivideo.ui.video.SuggestKeysAdapter;
-import com.weikou.beibeivideo.ui.video.VideoCloumn1Adapter;
 import com.weikou.beibeivideo.util.DimenUtils;
 import com.weikou.beibeivideo.util.UmengEventUtil;
 import com.weikou.beibeivideo.util.ad.ExpressAdManager;
+import com.weikou.beibeivideo.util.ad.GDTConstant;
 import com.weikou.beibeivideo.util.ad.manager.SearchResultAdManager;
 import com.weikou.beibeivideo.util.ui.DividerItemDecoration;
-import com.weikou.beibeivideo.R;
+import com.weikou.beibeivideo.util.ui.TopStatusSettings;
 
 import org.apache.http.Header;
 import org.json.JSONObject;
@@ -68,7 +62,7 @@
 public class SearchResultActivity extends BaseActivity implements
         OnClickListener {
 
-    private AutoCompleteTextView et_search_key;
+    private EditText et_search_key;
 
     private TextView tv_search_cancel;
 
@@ -101,11 +95,18 @@
 
     private LinearLayout ll_empty;
 
+    private SearchSuggestFragment suggestFragment;
+
+    private FrameLayout fl_suggest;
+
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.search_result_activity);
-        initStatusBar();
+        TopStatusSettings.setStatusViewAndDeepColor(this);
+
+        suggestFragment = new SearchSuggestFragment();
 
         rl_search_result = findViewById(R.id.rl_search_result);
         et_search_key = findViewById(R.id.et_search_key);
@@ -113,6 +114,7 @@
         rv_video_search = findViewById(R.id.rv_video_search);
         ll_top_bar = findViewById(R.id.ll_top_bar);
         ll_empty = findViewById(R.id.ll_empty);
+        fl_suggest = findViewById(R.id.fl_suggest);
 
         tv_search_cancel.setOnClickListener(this);
         et_search_key.addTextChangedListener(new TextWatcher() {
@@ -131,33 +133,18 @@
 
             @Override
             public void afterTextChanged(Editable s) {
-                if (!TextUtils.isEmpty(s.toString())
-                        || !TextUtils.isEmpty(et_search_key.getText())) {
-                    if (mFirst) {
-                        mFirst = false;
-                    } else {
-                        suggestSearch(s.toString());
-                    }
+                if (!TextUtils.isEmpty(s.toString())) {
                     et_search_key.setCompoundDrawablesWithIntrinsicBounds(0, 0,
                             R.drawable.ic_clear, 0);
                 } else {
                     et_search_key.setCompoundDrawablesWithIntrinsicBounds(0, 0,
                             0, 0);
                 }
-            }
-        });
-        et_search_key.setOnItemClickListener(new OnItemClickListener() {
-
-            @Override
-            public void onItemClick(AdapterView<?> parent, View view,
-                                    int position, long id) {
-                mFirst = true;
-                mCurrentKey = parent.getItemAtPosition(position).toString();
-                SoftKeyboardUtils.hideSoftInput(SearchResultActivity.this);
-                mCurrentPage = 1;
-                //娓呴櫎椤堕儴鍒嗙被
-                typeList = null;
-                search(mCurrentKey, mCurrentType);
+                if (mFirst) {
+                    mFirst = false;
+                } else {
+                    suggestSearch(s != null ? s.toString() : null);
+                }
             }
         });
 
@@ -190,18 +177,7 @@
             @Override
             public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                 if (actionId == EditorInfo.IME_ACTION_SEARCH) {
-                    if (StringUtils.isEmpty(et_search_key.getEditableText()
-                            .toString())) {
-                        mCurrentKey = et_search_key.getText().toString();
-                    } else {
-                        mCurrentKey = et_search_key.getEditableText().toString();
-                    }
-                    SoftKeyboardUtils.hideSoftInput(SearchResultActivity.this);
-                    mCurrentPage = 1;
-                    rl_search_result.setRefreshing(true);
-                    //娓呴櫎椤堕儴鍒嗙被
-                    typeList = null;
-                    search(mCurrentKey, mCurrentType);
+                    startSearch();
                     return true;
                 }
                 return false;
@@ -226,10 +202,15 @@
 
         rv_video_search.setLayoutManager(new MyLinearLayoutManager(getApplicationContext()));
         DividerItemDecoration decoration = new DividerItemDecoration();
-        decoration.setSize(DimenUtils.dip2px(rv_video_search.getContext(), 6));
+        decoration.setSize(DimenUtils.dip2px(rv_video_search.getContext(), 15));
         rv_video_search.addItemDecoration(decoration);
 
-        adapter = new SearchResultAdapter(this, mVideoInfos);
+        adapter = new SearchResultAdapter(this, mVideoInfos, new SearchResultAdapter.VideoAlbumNavClickListener() {
+            @Override
+            public void onNav(int p) {
+                navClick(p);
+            }
+        });
         loading = LayoutInflater.from(this).inflate(R.layout.item_loading, null);
         loading.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
         loading.setVisibility(View.GONE);
@@ -268,14 +249,30 @@
 //        loadAd();
     }
 
-    private void initTopBar(List<VideoType> videoTypeList) {
+    private void startSearch() {
+        if (StringUtils.isEmpty(et_search_key.getEditableText()
+                .toString())) {
+            mCurrentKey = et_search_key.getText().toString();
+        } else {
+            mCurrentKey = et_search_key.getEditableText().toString();
+        }
+        SoftKeyboardUtils.hideSoftInput(SearchResultActivity.this);
+        mCurrentPage = 1;
+        rl_search_result.setRefreshing(true);
+        //娓呴櫎椤堕儴鍒嗙被
+        typeList = null;
+        search(mCurrentKey, mCurrentType);
+    }
+
+
+    private void initTopBar() {
         int p = 0;
         ll_top_bar.removeAllViews();
         LayoutInflater inflater = LayoutInflater.from(getApplicationContext());
-        for (int i = 0; i < videoTypeList.size(); i++) {
+        for (int i = 0; i < typeList.size(); i++) {
             final View view = inflater.inflate(R.layout.item_search_result_top_bar_content, null);
             TextView tv_name = view.findViewById(R.id.tv_name);
-            tv_name.setText(videoTypeList.get(i).getName());
+            tv_name.setText(typeList.get(i).getName());
             setTopBarSelect(tv_name, i == p);
             ll_top_bar.addView(view);
             ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
@@ -286,31 +283,39 @@
                 @Override
                 public void onClick(View v) {
                     int p = Integer.parseInt(view.getTag() + "");
-                    selectTopBar(p);
-                    VideoType vt = videoTypeList.get(p);
-
-                    if (StringUtils.isBlank(mCurrentType) || !mCurrentType.equalsIgnoreCase(vt.getId())) {
-                        mCurrentPage = 1;
-                        mCurrentType = vt.getId();
-                        rl_search_result.setRefreshing(true);
-                        search(mCurrentKey, mCurrentType);
-                    }
+                    navClick(p);
                 }
             });
+        }
+    }
+
+    private void navClick(int p) {
+        if (typeList == null || typeList.size() <= p)
+            return;
+        selectTopBar(p);
+        VideoType vt = typeList.get(p);
+
+        if (StringUtils.isBlank(mCurrentType) || !mCurrentType.equalsIgnoreCase(vt.getId())) {
+            mCurrentPage = 1;
+            mCurrentType = vt.getId();
+            rl_search_result.setRefreshing(true);
+            search(mCurrentKey, mCurrentType);
         }
     }
 
     private void setTopBarSelect(TextView tv_name, boolean selected) {
         if (selected) {
             tv_name.setBackgroundResource(R.drawable.vpi__tab_selected_focused_holo);
-            tv_name.setTextSize(17);
-            tv_name.setTextColor(Color.parseColor("#FFFFFF"));
+            tv_name.setTextSize(19);
+            tv_name.setTextColor(getResources().getColor(R.color.search_nav_highlight_text_color));
             tv_name.setPadding(0, 0, 0, DimenUtils.dip2px(getApplicationContext(), 5));
+            tv_name.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
         } else {
             tv_name.setBackground(null);
-            tv_name.setTextSize(12);
-            tv_name.setTextColor(Color.parseColor("#999999"));
+            tv_name.setTextSize(14);
+            tv_name.setTextColor(getResources().getColor(R.color.nav_text_color));
             tv_name.setPadding(0, 0, 0, 0);
+            tv_name.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
         }
     }
 
@@ -321,7 +326,37 @@
         }
     }
 
+
+    private void hiddenSuggestFragment() {
+        fl_suggest.setVisibility(View.GONE);
+        getSupportFragmentManager().beginTransaction().remove(suggestFragment).commitAllowingStateLoss();
+    }
+
+    private void showSuggestFragment(String key, List<String> list) {
+        Bundle bundle = new Bundle();
+        bundle.putString("key", key);
+        bundle.putString("list", new Gson().toJson(list));
+        fl_suggest.setVisibility(View.VISIBLE);
+        suggestFragment.setItemClickListener(new SearchSuggestFragment.OnItemClickListener() {
+            @Override
+            public void onClick(String st) {
+                mFirst = true;
+                hiddenSuggestFragment();
+                et_search_key.setText(st);
+                startSearch();
+            }
+        });
+
+        suggestFragment.setArguments(bundle);
+        getSupportFragmentManager().beginTransaction().replace(R.id.fl_suggest, suggestFragment).commitAllowingStateLoss();
+    }
+
+
     private void suggestSearch(String key) {
+        if (StringUtils.isEmpty(key)) {
+            hiddenSuggestFragment();
+        }
+
         SharedPreferences preferences = getSharedPreferences("user",
                 Context.MODE_PRIVATE);
         String uid = preferences.getString("uid", "");
@@ -332,65 +367,99 @@
                     public void onSuccessPerfect(int statusCode,
                                                  Header[] headers, JSONObject jsonObject)
                             throws Exception {
+                        List<String> results = null;
                         if (jsonObject.getBoolean("IsPost")) {
                             Gson gson = new GsonBuilder().setFieldNamingPolicy(
                                     FieldNamingPolicy.UPPER_CAMEL_CASE)
                                     .create();
-                            List<String> results = gson.fromJson(jsonObject
+                            results = gson.fromJson(jsonObject
                                     .getJSONObject("Data").getJSONArray("data")
                                     .toString(), new TypeToken<List<String>>() {
                             }.getType());
-                            SuggestKeysAdapter adapter = new SuggestKeysAdapter(getApplicationContext(), results);
-                            et_search_key.setAdapter(adapter);
-                            adapter.notifyDataSetChanged();
+
+
+//                            SuggestKeysAdapter adapter = new SuggestKeysAdapter(getApplicationContext(), results);
+//                            et_search_key.setAdapter(adapter);
+//                            adapter.notifyDataSetChanged();
                         }
+
+                        if (results != null && results.size() > 0) {
+                            showSuggestFragment(key, results);
+                            suggestFragment.setData(key, results);
+                        } else {
+                            hiddenSuggestFragment();
+                        }
+
                     }
                 });
     }
 
-    private void fillAD(List<ExpressAdContainer> adList) {
-        if (adList != null) {
-            SearchResultActivity.this.adList.addAll(adList);
-        }
+    private synchronized void fillAD(List<ExpressAdContainer> adList) {
 
-        if (adList.size() > 0) {
-            boolean hasAd = false;
-            if (mVideoInfos != null && mVideoInfos.size() > 0)
-                for (VideoContent vc : mVideoInfos) {
-                    if (vc.getType() == VideoContent.TYPE_AD) {
-                        hasAd = true;
-                        break;
-                    }
+        //鍒ゆ柇褰撳墠椤甸潰鏄惁闇�瑕佸箍鍛�
+        int albumCount = 0;
+        if (mVideoInfos != null && mVideoInfos.size() > 0)
+            for (int i = 0; i < mVideoInfos.size(); i++) {
+                VideoContent vc = mVideoInfos.get(i);
+                if (vc.getType() == VideoContent.TYPE_AD) {
+                    //鏇存柊骞垮憡
+                    vc.setAd(adList.get(0));
+                    adapter.notifyItemChanged(i);
+                    return;
+                } else if (vc.getVideo().getShowType() == 1) {
+                    albumCount++;
                 }
-            //涓嶅瓨鍦ㄥ箍鍛�
-            if (!hasAd) {
-                mVideoInfos.add(0, VideoContent.createAdContent(SearchResultActivity.this.adList.get(0)));
-                SearchResultActivity.this.adList.remove(0);
-                adapter.notifyDataSetChanged();
             }
+
+        if (albumCount >= 2) {
+            VideoContent videoContent = VideoContent.createAdContent(adList.get(0));
+            mVideoInfos.add(2, videoContent);
+            adapter.notifyItemInserted(2);
         }
 
     }
 
+    //鎷夊彇2.0鐨勮嚜娓叉煋骞垮憡
     private void loadAd() {
-        ExpressAdContainer ad = SearchResultAdManager.getInstance(getApplicationContext()).consumeAD();
-        if (ad == null) {
-            SearchResultAdManager.getInstance(getApplicationContext()).loadAD(1, new ExpressAdManager.IAdLoadListener() {
-                @Override
-                public void onSuccess(List<ExpressAdContainer> adList) {
+        String pid = GDTConstant.PID_2_SEARCH_RESULT_ALBUM;
+        NativeUnifiedAD mAdManager = new NativeUnifiedAD(this, pid, new NativeADUnifiedListener() {
+
+            @Override
+            public void onNoAD(AdError adError) {
+
+            }
+
+            @Override
+            public void onADLoaded(List<NativeUnifiedADData> list) {
+                if (list != null && list.size() > 0) {
+                    List<ExpressAdContainer> adList = new ArrayList<>();
+                    adList.add(new ExpressAdContainer(list.get(0)));
                     fillAD(adList);
                 }
-            });
-        } else {
-            List<ExpressAdContainer> adList = new ArrayList<>();
-            adList.add(ad);
-            fillAD(adList);
-        }
-        //鍔犺浇涓嬩竴涓渶瑕佺殑骞垮憡
-        SearchResultAdManager.getInstance(getApplicationContext()).autoLoadAd();
+            }
+        });
+        mAdManager.setVideoPlayPolicy(VideoOption.VideoPlayPolicy.AUTO);
+        mAdManager.loadData(1);
     }
 
-    private List<ExpressAdContainer> adList = new ArrayList<>();
+//    private void loadAd() {
+//        ExpressAdContainer ad = SearchResultAdManager.getInstance(getApplicationContext()).consumeAD();
+//        if (ad == null) {
+//            SearchResultAdManager.getInstance(getApplicationContext()).loadAD(1, new ExpressAdManager.IAdLoadListener() {
+//                @Override
+//                public void onSuccess(List<ExpressAdContainer> adList) {
+//                    fillAD(adList);
+//                }
+//            });
+//        } else {
+//            List<ExpressAdContainer> adList = new ArrayList<>();
+//            adList.add(ad);
+//            fillAD(adList);
+//        }
+//        //鍔犺浇涓嬩竴涓渶瑕佺殑骞垮憡
+//        SearchResultAdManager.getInstance(getApplicationContext()).autoLoadAd();
+//    }
+
 
     private void search(String key, String videoType) {
 
@@ -402,6 +471,12 @@
         BeibeiVideoAPI.search(this, uid, key, videoType,
                 String.valueOf(mCurrentPage),
                 new BasicTextHttpResponseHandler() {
+
+                    @Override
+                    public void onStart() {
+                        super.onStart();
+                        hiddenSuggestFragment();
+                    }
 
                     @Override
                     public void onSuccessPerfect(int statusCode,
@@ -426,7 +501,7 @@
                                                     .getJSONArray("typeList").toString(),
                                             new TypeToken<List<VideoType>>() {
                                             }.getType());
-                                    initTopBar(typeList);
+                                    initTopBar();
                                 }
                             }
 
@@ -436,17 +511,23 @@
                             }
 
 
-                            if (adList.size() > 0) {
-                                int adPosition = (int) (videoContentList.size() * Math.random());
-                                if (mCurrentPage == 1)
-                                    adPosition = 0;
-                                videoContentList.add(adPosition, VideoContent.createAdContent(adList.get(0)));
-                                adList.remove(0);
-                            }
+                            //璁板綍褰撳墠鐨勫箍鍛婁俊鎭�
+                            VideoContent adContent = null;
+                            int adContentP = -1;
                             if (mCurrentPage <= 1) {
+                                for (int i = 0; i < mVideoInfos.size(); i++) {
+                                    if (mVideoInfos.get(i).getType() == VideoContent.TYPE_AD) {
+                                        adContent = mVideoInfos.get(i);
+                                        adContentP = i;
+                                    }
+                                }
                                 mVideoInfos.clear();
                             }
+
                             mVideoInfos.addAll(videoContentList);
+                            if (adContent != null && mVideoInfos.size() >= adContentP) {
+                                mVideoInfos.add(adContentP, adContent);
+                            }
                             adapter.notifyDataSetChanged();
 
                             if (mVideoInfos != null && mVideoInfos.size() > 0) {
@@ -459,10 +540,8 @@
                                 rl_search_result.setVisibility(View.GONE);
                             }
 
-                            //鍔犺浇涓嬩竴娆¤鐢ㄧ殑骞垮憡
-                            if (videoInfos.size() > 0) {
-                                if (adList.size() < 1)
-                                    loadAd();
+                            if (mCurrentPage == 1) {
+                                loadAd();
                             }
                         }
                     }
@@ -492,7 +571,11 @@
     public void onClick(View v) {
         switch (v.getId()) {
             case R.id.tv_search_cancel: {
-                finish();
+                if (fl_suggest.getVisibility() == View.VISIBLE) {
+                    hiddenSuggestFragment();
+                } else {
+                    finish();
+                }
             }
             break;
             case R.id.tv_top_bar_left:

--
Gitblit v1.8.0