package com.tejia.lijin.app.ui.recommend;
|
|
import android.app.ActivityManager;
|
import android.content.ComponentName;
|
import android.content.Context;
|
import android.content.SharedPreferences;
|
import android.graphics.drawable.Drawable;
|
import android.os.Bundle;
|
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.FragmentManager;
|
import androidx.fragment.app.FragmentPagerAdapter;
|
import androidx.viewpager.widget.ViewPager;
|
import android.text.Editable;
|
import android.text.TextUtils;
|
import android.text.TextWatcher;
|
import android.view.KeyEvent;
|
import android.view.MotionEvent;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.view.inputmethod.InputMethodManager;
|
import android.widget.AdapterView;
|
import android.widget.AutoCompleteTextView;
|
import android.widget.TextView;
|
import android.widget.Toast;
|
|
import com.viewpagerindicator.TabPageIndicatorTrendsType;
|
import com.wpc.library.util.common.SoftKeyboardUtils;
|
import com.wpc.library.util.common.StringUtils;
|
import com.tejia.lijin.app.R;
|
import com.tejia.lijin.app.ShoppingApplication;
|
import com.tejia.lijin.app.db.SearchHistoryDao;
|
import com.tejia.lijin.app.entity.Params;
|
import com.tejia.lijin.app.entity.SearchHistory;
|
import com.tejia.lijin.app.ui.BaseFragmentActivity;
|
import com.tejia.lijin.app.util.ToolUtil;
|
import com.tejia.lijin.app.util.TopStatusSettings;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
import de.greenrobot.event.EventBus;
|
|
/**
|
* Created by weikou2015 on 2017/2/21.
|
* 搜索结果页
|
*/
|
|
public class SearchResultActivity extends BaseFragmentActivity implements View.OnClickListener {
|
private TextView tv_back, tv_search;
|
private AutoCompleteTextView et_search;
|
MarketAdapter adapter;
|
ViewPager vp_search_result;
|
TabPageIndicatorTrendsType tab_indicator;
|
public String kw = "";
|
|
@Override
|
protected void onCreate(Bundle savedInstanceState) {
|
ToolUtil.setCustomDensity(this, ShoppingApplication.application);
|
super.onCreate(savedInstanceState);
|
setContentView(R.layout.activity_search_result);
|
initView();
|
addListener();
|
}
|
|
|
private void initView() {
|
TopStatusSettings.setStatusViewAndDeepColor(this);
|
tv_back = findViewById(R.id.tv_search_result_back);
|
et_search = findViewById(R.id.et_search_result);
|
tv_search = findViewById(R.id.tv_search_result);
|
vp_search_result = findViewById(R.id.vp_search_result);
|
tab_indicator = findViewById(R.id.indicator);
|
int curPage = getIntent().getIntExtra("page", 0);
|
kw = getIntent().getStringExtra("content");
|
et_search.setText(kw);
|
if (!StringUtils.isEmpty(kw))
|
et_search.setSelection(kw.length());
|
|
mList.add("淘宝");
|
mList.add("京东");
|
mList.add("拼多多");
|
mList.add("唯品会");
|
mList.add("苏宁");
|
adapter = new MarketAdapter(getSupportFragmentManager(), new IClearFocus() {
|
@Override
|
public void clearFocus() {
|
et_search.clearFocus();
|
}
|
});
|
vp_search_result.setAdapter(adapter);
|
vp_search_result.setOffscreenPageLimit(0);
|
tab_indicator.setViewPager(vp_search_result);
|
tab_indicator.setCurrentItem(curPage);
|
|
final String from = getIntent().getStringExtra("from");
|
if (!StringUtils.isEmpty(from)) {
|
if (from.equalsIgnoreCase("recommendSearch")) {
|
tv_back.postDelayed(new Runnable() {
|
@Override
|
public void run() {
|
ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
|
List<ActivityManager.RunningTaskInfo> tasks = manager.getRunningTasks(1);
|
if (!tasks.isEmpty()) {
|
ComponentName topActivity = tasks.get(0).topActivity;
|
if (topActivity.getClassName().contains("SearchResultActivity")) {
|
}
|
}
|
}
|
}, 5 * 1000);
|
} else {
|
}
|
}
|
|
|
}
|
|
private void addListener() {
|
tv_back.setOnClickListener(this);
|
tv_search.setOnClickListener(this);
|
if (!TextUtils.isEmpty(et_search.getText().toString())) {
|
et_search.setHint("");
|
// suggestSearch(s.toString());
|
et_search.setCompoundDrawablesWithIntrinsicBounds(0, 0,
|
R.drawable.ic_clear, 0);
|
} else {
|
et_search.setCompoundDrawablesWithIntrinsicBounds(0, 0,
|
0, 0);
|
}
|
|
et_search.addTextChangedListener(new TextWatcher() {
|
@Override
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
}
|
|
@Override
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
|
}
|
|
@Override
|
public void afterTextChanged(Editable s) {
|
if (!TextUtils.isEmpty(s.toString())) {
|
et_search.setHint("");
|
// suggestSearch(s.toString());
|
et_search.setCompoundDrawablesWithIntrinsicBounds(0, 0,
|
R.drawable.ic_clear, 0);
|
} else {
|
et_search.setCompoundDrawablesWithIntrinsicBounds(0, 0,
|
0, 0);
|
}
|
}
|
});
|
et_search.setOnTouchListener(new View.OnTouchListener() {
|
@Override
|
public boolean onTouch(View v, MotionEvent event) {
|
// getCompoundDrawables() 可以获取一个长度为4的数组,
|
// 存放drawableLeft,Right,Top,Bottom四个图片资源对象
|
// index=2 表示的是 drawableRight 图片资源对象
|
Drawable drawable = et_search.getCompoundDrawables()[2];
|
if (drawable == null)
|
return false;
|
|
if (event.getAction() != MotionEvent.ACTION_UP)
|
return false;
|
|
// drawable.getIntrinsicWidth() 获取drawable资源图片呈现的宽度
|
if (event.getX() > et_search.getWidth()
|
- et_search.getPaddingRight()
|
- drawable.getIntrinsicWidth()) {
|
et_search.setText("");
|
et_search.setHint("");
|
}
|
return false;
|
}
|
});
|
et_search.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
@Override
|
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
if (SearchActivity.instance != null)
|
SearchActivity.instance.finish();
|
kw = parent.getItemAtPosition(position).toString();
|
addSearchHistory(kw, vp_search_result.getCurrentItem());
|
}
|
});
|
et_search.setOnEditorActionListener(new TextView.OnEditorActionListener() {
|
@Override
|
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
|
if (StringUtils.isEmpty(et_search.getText().toString())) {
|
// SingleToast.showToast(SearchResultActivity.this, "请输入搜索内容");
|
Toast.makeText(SearchResultActivity.this, "请先输入搜索内容", Toast.LENGTH_SHORT).show();
|
} else {
|
if (SearchActivity.instance != null)
|
SearchActivity.instance.finish();
|
// filterAdapter.filters.clear();
|
// filterAdapter.notifyDataSetChanged();
|
kw = et_search.getText().toString();
|
findViewById(R.id.ll_price_input).setVisibility(View.GONE);
|
et_search.dismissDropDown();
|
|
addSearchHistory(kw, vp_search_result.getCurrentItem());
|
Params params = new Params();
|
params.setParams(kw);
|
EventBus.getDefault().post(params);
|
}
|
return false;
|
}
|
});
|
}
|
|
@Override
|
public void onClick(View v) {
|
switch (v.getId()) {
|
case R.id.tv_search_result_back:
|
finish();
|
break;
|
case R.id.tv_search_result:
|
et_search.clearFocus();
|
if (StringUtils.isEmpty(et_search.getText().toString())) {
|
Toast.makeText(SearchResultActivity.this, "请输入搜索内容", Toast.LENGTH_SHORT).show();
|
} else {
|
et_search.dismissDropDown();
|
if (SearchActivity.instance != null)
|
SearchActivity.instance.finish();
|
kw = et_search.getText().toString();
|
findViewById(R.id.ll_price_input).setVisibility(View.GONE);
|
addSearchHistory(kw, vp_search_result.getCurrentItem());
|
Params params = new Params();
|
params.setParams(kw);
|
EventBus.getDefault().post(params);
|
SoftKeyboardUtils.hideSoftInput(SearchResultActivity.this);
|
}
|
|
break;
|
}
|
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
|
if (imm != null) {
|
imm.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(),
|
0);
|
}
|
}
|
|
|
/**
|
* 添加历史搜索
|
*
|
* @param content
|
* @param page viewpage 当前页 1表示淘宝 2表示京东 3表示拼多多
|
*/
|
public void addSearchHistory(String content, int page) {
|
SearchHistoryDao historyDao = new SearchHistoryDao(this);
|
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;
|
if (page == 0) {
|
sp = getSharedPreferences("searchHistory", Context.MODE_PRIVATE);
|
} else if (page == 1) {
|
sp = getSharedPreferences("searchHistory_jd", Context.MODE_PRIVATE);
|
} else if (page == 2) {
|
sp = getSharedPreferences("searchHistory_pdd", Context.MODE_PRIVATE);
|
} else if (page == 3) {
|
sp = getSharedPreferences("searchHistory_vip", Context.MODE_PRIVATE);
|
} else if (page == 4) {
|
sp = getSharedPreferences("searchHistory_suning", Context.MODE_PRIVATE);
|
} else {
|
sp = 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();
|
}
|
|
|
List<String> mList = new ArrayList<>();
|
|
class MarketAdapter extends FragmentPagerAdapter {
|
|
private IClearFocus clearFocus;
|
|
public MarketAdapter(FragmentManager fm, IClearFocus clearFocus) {
|
super(fm);
|
this.clearFocus = clearFocus;
|
}
|
|
@Override
|
public Fragment getItem(int position) {
|
return SearchResultHyperMarketFragment.newInstance(kw, position + 1, clearFocus);
|
}
|
|
|
@Override
|
public CharSequence getPageTitle(int position) {
|
|
return mList.get(position % mList.size());
|
}
|
|
@Override
|
public Object instantiateItem(ViewGroup container, int position) {
|
return super.instantiateItem(container, position);
|
}
|
|
@Override
|
public int getCount() {
|
return mList.size();
|
}
|
}
|
|
interface IClearFocus {
|
public void clearFocus();
|
}
|
}
|