package com.tejia.lijin.app.presenter;
|
|
import android.content.Context;
|
import android.content.Intent;
|
import android.content.SharedPreferences;
|
import android.text.TextUtils;
|
import android.view.View;
|
import android.widget.FrameLayout;
|
import android.widget.ImageView;
|
import android.widget.LinearLayout;
|
import android.widget.RelativeLayout;
|
import android.widget.TextView;
|
|
import com.bumptech.glide.Glide;
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.google.gson.reflect.TypeToken;
|
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
|
import com.wpc.library.util.cache.DiskLruCache;
|
import com.wpc.library.util.common.DimenUtils;
|
import com.tejia.lijin.app.contract.SearchFgContract;
|
import com.tejia.lijin.app.model.SearchFgModel;
|
import com.tejia.lijin.app.R;
|
import com.tejia.lijin.app.db.SearchHistoryDao;
|
import com.tejia.lijin.app.entity.HotSearch;
|
import com.tejia.lijin.app.entity.SearchHistory;
|
import com.tejia.lijin.app.ui.recommend.FragmentSearch;
|
import com.tejia.lijin.app.ui.recommend.SearchResultActivity;
|
import com.tejia.lijin.app.util.Constant;
|
import com.tejia.lijin.app.util.FlowLayout;
|
import com.tejia.lijin.app.util.umengCustomEvent.SearchCustomEvent;
|
|
import org.json.JSONObject;
|
|
import java.io.IOException;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* 搜索过渡页 Presenter
|
*/
|
public class SearchFgPresenter extends BasePresenter<SearchFgContract.SearchView> {
|
private SearchFgModel model;
|
private Context mContext;
|
|
public SearchFgPresenter(Context context) {
|
this.model = new SearchFgModel(context);
|
this.mContext = context;
|
}
|
|
/**
|
* 搜索过渡页 搜索关键词
|
*
|
* @param id 1淘宝 2 京东 3拼多多
|
*/
|
public void getHotSearch(final int id) {
|
model.Search(id, new SearchFgContract.SearchCallBack() {
|
@Override
|
public void onSuccess(List<HotSearch> list, JSONObject object) throws IOException {
|
if (getView() != null) {
|
getView().onSearchSuccess(list, object);
|
}
|
}
|
|
@Override
|
public void onFail(String errorInfo) {
|
if (getView() != null) {
|
getView().onSearchFail(errorInfo);
|
}
|
}
|
});
|
}
|
|
/**
|
* 添加历史搜索
|
*
|
* @param content
|
* @param page viewpage 当前页 1表示淘宝 2表示京东 3表示拼多多
|
*/
|
public void addSearchHistory(String content, int page) {
|
SearchHistoryDao historyDao = new SearchHistoryDao(mContext);
|
List<SearchHistory> list1 = historyDao.getAllSearchHistory();
|
for (int i = 0; i < list1.size(); i++) {
|
if (list1.get(i).getName().equalsIgnoreCase(content)) {
|
historyDao.addSearch(list1.get(i));
|
}
|
}
|
SharedPreferences sp = null;
|
if (page == Constant.GOODS_TYPE_TB) {
|
sp = mContext.getSharedPreferences("searchHistory", Context.MODE_PRIVATE);
|
} else if (page == Constant.GOODS_TYPE_JD) {
|
sp = mContext.getSharedPreferences("searchHistory_jd", Context.MODE_PRIVATE);
|
} else if (page == Constant.GOODS_TYPE_PDD) {
|
sp = mContext.getSharedPreferences("searchHistory_pdd", Context.MODE_PRIVATE);
|
} else if (page == Constant.GOODS_TYPE_VIP) {
|
sp = mContext.getSharedPreferences("searchHistory_vip", Context.MODE_PRIVATE);
|
} else if (page == Constant.GOODS_TYPE_SUNING) {
|
sp = mContext.getSharedPreferences("searchHistory_suning", Context.MODE_PRIVATE);
|
} else {
|
sp = mContext.getSharedPreferences("searchHistory", Context.MODE_PRIVATE);
|
}
|
|
int formNums = sp.getInt("searchNums", 0);//历史记录条数
|
SharedPreferences.Editor editor = sp.edit();
|
List<String> list = new ArrayList<>();
|
for (int i = 0; i < formNums; i++) {//取出 已经显示的历史搜索记录
|
list.add(sp.getString("searchItem_" + (formNums - 1 - i), ""));//mList.get(mList.size() - 1 - i)
|
}
|
if (list.contains(content)) {//已经包含了搜索结果
|
list.remove(content);
|
} else {//最大只要10条
|
if (formNums >= 10) {
|
list.remove(0);
|
}
|
}
|
list.add(content);//list存入 当前搜索的历史记录
|
//存入历史搜索记录
|
editor.putInt("searchNums", list.size());
|
for (int i = 0; i < list.size(); i++) {
|
editor.putString("searchItem_" + i, list.get(list.size() - 1 - i));
|
}
|
editor.apply();
|
}
|
|
/**
|
* 跳转 搜索结果页
|
*
|
* @param toString 搜索内容
|
* @param page 1淘宝 2京东 3 拼多多
|
*/
|
public void addSearchResultActivity(String toString, int page) {
|
Intent intent = new Intent(mContext, SearchResultActivity.class);
|
intent.putExtra("content", toString);
|
intent.putExtra("type", "normal");
|
intent.putExtra("page", (page - 1));
|
mContext.startActivity(intent);
|
}
|
|
/**
|
* 初始热门搜索化缓存
|
*/
|
public void initCacheData(DiskLruCache cache, FlowLayout fl_container, final int id, List<HotSearch> hList) {
|
//进入缓存
|
if (cache != null) {
|
fl_container.removeAllViews();
|
//热门搜索
|
DiskLruCache.Snapshot snapshot = null;
|
try {
|
|
snapshot = cache.get(getKey("gethotSearchList"));
|
|
if (snapshot != null) {
|
Gson gson = new GsonBuilder().serializeNulls().create();
|
List<HotSearch> homeTypes = gson.fromJson(
|
snapshot.getString(0),
|
new TypeToken<List<HotSearch>>() {
|
}.getType());
|
for (int i = 0; i < homeTypes.size(); i++) {
|
final TextView tv = new TextView(mContext);
|
tv.setTextSize(13);
|
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT);
|
params.setMargins(0, DimenUtils.dip2px(mContext, 8), DimenUtils.dip2px(mContext, 12), 0);
|
tv.setLayoutParams(params);
|
tv.setLines(1);
|
tv.setTextColor(mContext.getResources().getColor(R.color.search_content_text_color));
|
tv.setEllipsize(TextUtils.TruncateAt.END);
|
tv.setBackground(mContext.getResources().getDrawable(R.drawable.shape_search_history_item_bg));
|
tv.setPadding(DimenUtils.dip2px(mContext, 20), DimenUtils.dip2px(mContext, 5), DimenUtils.dip2px(mContext, 20), DimenUtils.dip2px(mContext, 5));
|
tv.setText(homeTypes.get(i).getName());
|
tv.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
addSearchHistory(tv.getText().toString(), id);
|
SearchCustomEvent.searchHot(mContext, tv.getText().toString());
|
addSearchResultActivity(tv.getText().toString(), id);
|
}
|
});
|
fl_container.addView(tv);
|
}
|
hList.addAll(homeTypes);
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
if (snapshot != null) {
|
snapshot.close();
|
}
|
}
|
|
}
|
}
|
|
public void fillFlowData(List<String> list, FlowLayout fl_container, final ISearchItemClick clickListener) {
|
fl_container.removeAllViews();
|
for (int i = 0; i < list.size(); i++) {
|
final int p = i;
|
final TextView tv = new TextView(mContext);
|
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT);
|
params.setMargins(0, DimenUtils.dip2px(mContext, 8), DimenUtils.dip2px(mContext, 12), 0);
|
tv.setLayoutParams(params);
|
tv.setLines(1);
|
tv.setTextColor(mContext.getResources().getColor(R.color.text_black_1));
|
tv.setEllipsize(TextUtils.TruncateAt.END);
|
tv.setBackground(mContext.getResources().getDrawable(R.drawable.shape_search_history_item_bg));
|
tv.setPadding(DimenUtils.dip2px(mContext, 20), DimenUtils.dip2px(mContext, 5), DimenUtils.dip2px(mContext, 20), DimenUtils.dip2px(mContext, 5));
|
tv.setText(list.get(i));
|
tv.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (clickListener != null) {
|
clickListener.onClick(tv.getText() + "", p);
|
}
|
}
|
});
|
fl_container.addView(tv);
|
}
|
|
|
}
|
|
public static void fillFlowData(Context context, List<String> list, FlowLayout fl_container, final ISearchItemClick clickListener) {
|
fl_container.removeAllViews();
|
for (int i = 0; i < list.size(); i++) {
|
final int p = i;
|
final TextView tv = new TextView(context);
|
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT);
|
params.setMargins(0, DimenUtils.dip2px(context, 8), DimenUtils.dip2px(context, 12), 0);
|
tv.setLayoutParams(params);
|
// tv.setTextSize(13);
|
tv.setLines(1);
|
tv.setTextColor(context.getResources().getColor(R.color.search_content_text_color));
|
tv.setEllipsize(TextUtils.TruncateAt.END);
|
tv.setBackground(context.getResources().getDrawable(R.drawable.shape_search_history_item_bg));
|
tv.setPadding(DimenUtils.dip2px(context, 20), DimenUtils.dip2px(context, 5), DimenUtils.dip2px(context, 20), DimenUtils.dip2px(context, 5));
|
tv.setText(list.get(i));
|
tv.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (clickListener != null) {
|
clickListener.onClick(tv.getText() + "", p);
|
}
|
}
|
});
|
fl_container.addView(tv);
|
}
|
|
|
}
|
|
public String getKey(String method) {
|
return new Md5FileNameGenerator().generate(method);
|
}
|
|
/**
|
* 显示历史记录
|
*/
|
public void setHistoricalRecords(int id, List<String> mList,
|
LinearLayout ll_search_history_hint, LinearLayout ll_guide, RelativeLayout ll_guidevideo
|
, String videoPicture) {
|
SharedPreferences sp;
|
if (id == Constant.GOODS_TYPE_TB) {
|
sp = mContext.getSharedPreferences("searchHistory", Context.MODE_PRIVATE);
|
} else if (id == Constant.GOODS_TYPE_JD) {
|
sp = mContext.getSharedPreferences("searchHistory_jd", Context.MODE_PRIVATE);
|
} else if (id == Constant.GOODS_TYPE_PDD) {
|
sp = mContext.getSharedPreferences("searchHistory_pdd", Context.MODE_PRIVATE);
|
} else if (id == Constant.GOODS_TYPE_VIP) {
|
sp = mContext.getSharedPreferences("searchHistory_vip", Context.MODE_PRIVATE);
|
} else if (id == Constant.GOODS_TYPE_SUNING) {
|
sp = mContext.getSharedPreferences("searchHistory_suning", Context.MODE_PRIVATE);
|
} else {
|
sp = mContext.getSharedPreferences("searchHistory", Context.MODE_PRIVATE);
|
}
|
if (mList.size() > 0)
|
mList.clear();
|
int formNums = sp.getInt("searchNums", 0);
|
for (int i = 0; i < formNums; i++) {
|
String formItem = sp.getString("searchItem_" + i, null);
|
mList.add(formItem);
|
// Log.e("mResult", "onResume();" + mList.get(i));
|
}
|
|
if (mList.size() > 0) {
|
ll_search_history_hint.setVisibility(View.VISIBLE);
|
if (ll_guide != null)
|
ll_guide.setVisibility(View.GONE);
|
ll_guidevideo.setVisibility(View.GONE);
|
} else {
|
ll_search_history_hint.setVisibility(View.GONE);
|
if (ll_guide != null)
|
ll_guide.setVisibility(View.VISIBLE);
|
if (videoPicture == null || videoPicture.length() == 0 || videoPicture.equals(" ")) {//视频图片为空 隐藏视频
|
ll_guidevideo.setVisibility(View.GONE);
|
} else {
|
ll_guidevideo.setVisibility(View.VISIBLE);
|
}
|
}
|
}
|
|
/**
|
* 热门 搜索请求成功 进行业务逻辑展示
|
*
|
* @param list
|
* @param id
|
* @param fl_hot_search
|
* @param cache
|
* @param object
|
* @throws IOException
|
*/
|
public void SuccessfulRequest(List<HotSearch> list, final int id, FlowLayout fl_hot_search, DiskLruCache cache, JSONObject object) throws IOException {
|
for (int i = 0; i < list.size(); i++) {
|
final TextView tv = new TextView(mContext);
|
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT);
|
params.setMargins(0, DimenUtils.dip2px(mContext, 8), DimenUtils.dip2px(mContext, 12), 0);
|
tv.setLayoutParams(params);
|
tv.setLines(1);
|
tv.setTextColor(mContext.getResources().getColor(R.color.text_black_1));
|
tv.setEllipsize(TextUtils.TruncateAt.END);
|
tv.setBackgroundDrawable(mContext.getResources().getDrawable(R.drawable.shape_search_history_item_bg));
|
tv.setPadding(DimenUtils.dip2px(mContext, 20), DimenUtils.dip2px(mContext, 5), DimenUtils.dip2px(mContext, 20), DimenUtils.dip2px(mContext, 5));
|
tv.setText(list.get(i).getName());
|
tv.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
addSearchHistory(tv.getText().toString(), id);
|
SearchCustomEvent.searchHot(mContext, tv.getText().toString());
|
addSearchResultActivity(tv.getText().toString(), id);
|
}
|
});
|
fl_hot_search.addView(tv);
|
}
|
DiskLruCache.Editor editor = null;
|
if (id == 1) {
|
} else if (id == 2) {
|
editor = cache.edit(getKey("gethotSearchList_jd"));
|
} else if (id == 3) {
|
editor = cache.edit(getKey("gethotSearchList_pdd"));
|
} else {
|
editor = cache.edit(getKey("gethotSearchList"));
|
}
|
|
editor.set(0, object.optJSONObject("data").optJSONArray("hotSearchList").toString());
|
editor.commit();
|
}
|
|
/**
|
* 设置图片教程
|
*
|
* @param id
|
* @param iv_guide1
|
*/
|
public void setCourse(int id, ImageView iv_guide1) {
|
int uir;
|
if (id == Constant.GOODS_TYPE_TB) {//淘宝
|
uir = R.drawable.ic_search_guide1;
|
} else if (id == Constant.GOODS_TYPE_JD) {//京东
|
uir = R.drawable.ic_search_guide1jd;
|
} else if (id == Constant.GOODS_TYPE_PDD) {//拼多多
|
uir = R.drawable.ic_search_guide1pdd;
|
} else if (id == Constant.GOODS_TYPE_VIP) {//唯品会
|
uir = R.drawable.ic_search_guide1vip;
|
} else if (id == Constant.GOODS_TYPE_SUNING) {//苏宁
|
uir = R.drawable.ic_search_guide1suning;
|
} else {
|
uir = R.drawable.ic_search_guide1;
|
}
|
Glide.with(mContext)
|
.load(uir)
|
.into(iv_guide1);
|
}
|
|
public interface ISearchItemClick {
|
|
public void onClick(String text, int position);
|
|
}
|
}
|