package com.tejia.lijin.app.ui.recommend;
|
|
import android.content.Intent;
|
import android.graphics.drawable.Drawable;
|
import android.os.Bundle;
|
import android.provider.Settings;
|
|
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.inputmethod.EditorInfo;
|
import android.widget.AdapterView;
|
import android.widget.EditText;
|
import android.widget.FrameLayout;
|
import android.widget.ListView;
|
import android.widget.TextView;
|
import android.widget.Toast;
|
|
import com.umeng.analytics.MobclickAgent;
|
import com.viewpagerindicator.TabPageIndicator_Search;
|
import com.wpc.library.util.common.StringUtils;
|
import com.tejia.lijin.app.R;
|
import com.tejia.lijin.app.contract.SearchContract;
|
import com.tejia.lijin.app.entity.TrendsType;
|
import com.tejia.lijin.app.presenter.SearchPresenter;
|
import com.tejia.lijin.app.util.Constant;
|
import com.tejia.lijin.app.util.TopStatusSettings;
|
import com.tejia.lijin.app.view.BaseActivity;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* Created by weikou2015 on 2017/2/21.
|
* 搜索
|
*/
|
|
public class SearchActivity extends BaseActivity<SearchContract.SearchView, SearchPresenter>
|
implements SearchContract.SearchView, View.OnClickListener
|
, TabPageIndicator_Search.OnTabSelectedListener {
|
|
public EditText et_search;
|
private TextView tv_search;
|
public static SearchActivity instance = null;
|
private ViewPager sv_search; //viewpager 布局
|
private ListView search_tv_list;//搜索建议
|
private FrameLayout indicator;
|
private SearchTypeAdapter adapter;
|
private TabPageIndicator_Search tab_indicator;
|
|
@Override
|
protected void initActivityView(Bundle savedInstanceState) {
|
setContentView(R.layout.activity_search);
|
}
|
|
@Override
|
protected void findViewById() {
|
instance = this;
|
TopStatusSettings.setStatusViewAndDeepColor(this);
|
setTheme(R.style.AppTabTheme8);
|
search_tv_list = findViewById(R.id.search_tv_list);
|
sv_search = findViewById(R.id.sv_search);
|
et_search = findViewById(R.id.et_search);
|
tv_search = findViewById(R.id.tv_search);
|
indicator = findViewById(R.id.sv_search_tab);
|
|
findViewById(R.id.tv_net_setting).setOnClickListener(this);
|
findViewById(R.id.tv_refresh).setOnClickListener(this);
|
findViewById(R.id.tv_search_result_back).setOnClickListener(this);
|
findViewById(R.id.tv_search_result).setOnClickListener(this);
|
|
|
tv_search.setOnClickListener(this);
|
|
// setHotData();
|
searchadapter = new SearchAdapter(SearchActivity.this, list);
|
search_tv_list.setAdapter(searchadapter);
|
//设置导航
|
TrendsType trendsType = new TrendsType();
|
trendsType.setId(Constant.GOODS_TYPE_TB);
|
trendsType.setName("淘宝");
|
mTypeList.add(trendsType);
|
TrendsType trendsType2 = new TrendsType();
|
trendsType2.setId(Constant.GOODS_TYPE_JD);
|
trendsType2.setName("京东");
|
mTypeList.add(trendsType2);
|
TrendsType trendsType3 = new TrendsType();
|
trendsType3.setId(Constant.GOODS_TYPE_PDD);
|
trendsType3.setName("拼多多");
|
mTypeList.add(trendsType3);
|
|
TrendsType trendsType4 = new TrendsType();
|
trendsType4.setId(Constant.GOODS_TYPE_VIP);
|
trendsType4.setName("唯品会");
|
mTypeList.add(trendsType4);
|
|
TrendsType trendsType5 = new TrendsType();
|
trendsType5.setId(Constant.GOODS_TYPE_SUNING);
|
trendsType5.setName("苏宁");
|
mTypeList.add(trendsType5);
|
|
if (adapter == null) {
|
FragmentManager fm = getSupportFragmentManager();
|
adapter = new SearchTypeAdapter(fm);
|
}
|
|
sv_search.setAdapter(adapter);
|
sv_search.setOffscreenPageLimit(2);
|
if (tab_indicator == null) {
|
tab_indicator = new TabPageIndicator_Search(indicator.getContext());
|
}
|
if (indicator.getChildCount() > 0)
|
indicator.removeAllViews();
|
indicator.addView(tab_indicator);
|
tab_indicator.setViewPager(sv_search);
|
tab_indicator.setOnTabSelectedListener(this);
|
|
}
|
|
/**
|
* 初始化 Presenter
|
*
|
* @return
|
*/
|
@Override
|
protected SearchPresenter createPresenter() {
|
return new SearchPresenter(this);
|
}
|
|
@Override
|
protected void getData() {
|
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(" ");
|
if (search_tv_list.getVisibility() == View.GONE) {
|
search_tv_list.setVisibility(View.VISIBLE);
|
}
|
mPresenter.getSuggestSearch(s.toString(), page);//搜索关键词
|
et_search.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_clear, 0);
|
} else {
|
if (list != null && list.size() > 0) {
|
list.clear();
|
searchadapter.notifyDataSetChanged();
|
}
|
if (search_tv_list.getVisibility() == View.VISIBLE) {
|
search_tv_list.setVisibility(View.GONE);
|
}
|
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;
|
}
|
});
|
|
/**
|
* item、点击事件
|
*/
|
search_tv_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
@Override
|
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
mPresenter.addSearchHistory(parent.getItemAtPosition(position).toString(), page);//添加搜索记录
|
search_tv_list.setVisibility(View.GONE);
|
mPresenter.addSearchResultActivity(parent.getItemAtPosition(position).toString(), page);//跳转搜索结果页
|
et_search.getText().clear();//清空搜索
|
}
|
});
|
//编辑完之后点击软键盘上的回车键
|
et_search.setOnEditorActionListener(new TextView.OnEditorActionListener() {
|
@Override
|
public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) {
|
//点击搜索 或者 完成 并且值不为空
|
if ((arg1 == EditorInfo.IME_ACTION_SEARCH || arg1 == EditorInfo.IME_ACTION_DONE) && !StringUtils.isEmpty(et_search.getText().toString())) {
|
startSearch(et_search.getText().toString());
|
return true;
|
}
|
// //点击搜索 或者 完成 并且值为空 提示语不为空
|
else if (et_search != null && et_search.getHint() != null && (arg1 == EditorInfo.IME_ACTION_SEARCH || arg1 == EditorInfo.IME_ACTION_DONE) && !StringUtils.isEmpty(et_search.getHint().toString())) {
|
startSearch(et_search.getHint().toString());
|
return true;
|
}
|
return false;
|
}
|
});
|
}
|
|
|
private void startSearch(String text) {
|
if (text == null) {
|
if (et_search.getText() != null && !StringUtils.isNullOrEmpty(et_search.getText().toString())) {
|
text = et_search.getText().toString().trim();
|
}
|
|
if (text == null) {
|
if (et_search.getHint() != null && !StringUtils.isNullOrEmpty(et_search.getHint().toString())) {
|
text = et_search.getHint().toString().trim();
|
}
|
}
|
}
|
|
mPresenter.addSearchHistory(text, page);//添加搜索记录
|
mPresenter.addSearchResultActivity(text, page);//跳转搜索结果页
|
}
|
|
/**
|
* 搜索成功
|
*
|
* @param list
|
* @param key
|
*/
|
@Override
|
public void onSearchSuccess(List<String> list, String key) {
|
this.list = list;
|
searchadapter.setList(list, key);
|
searchadapter.notifyDataSetChanged();
|
}
|
|
/**
|
* 搜索失败
|
*
|
* @param errorInfo
|
*/
|
@Override
|
public void onSearchFail(String errorInfo) {
|
Toast.makeText(this, "请检测网络", Toast.LENGTH_SHORT).show();
|
}
|
|
/**
|
* 指示器点击 item
|
*
|
* @param position
|
*/
|
@Override
|
public void onTabSelected(int position) {
|
page = position;
|
}
|
|
private List<String> list;
|
private SearchAdapter searchadapter;
|
|
public int page = 0;//viewpage 当前页
|
|
private List<TrendsType> mTypeList = new ArrayList<>();
|
|
@Override
|
protected void onResume() {
|
super.onResume();
|
}
|
|
@Override
|
protected void onPause() {
|
super.onPause();
|
}
|
|
|
@Override
|
public void onClick(View v) {
|
switch (v.getId()) {
|
case R.id.tv_search_result_back://取消
|
if (search_tv_list.getVisibility() == View.VISIBLE) {
|
search_tv_list.setVisibility(View.GONE);
|
} else
|
finish();
|
break;
|
case R.id.tv_search_result://开始搜索
|
startSearch(null);
|
break;
|
case R.id.tv_net_setting:
|
startActivity(new Intent(Settings.ACTION_SETTINGS));
|
break;
|
case R.id.tv_refresh:
|
startActivity(new Intent(Settings.ACTION_SETTINGS));
|
break;
|
default:
|
break;
|
}
|
}
|
|
|
private class SearchTypeAdapter extends FragmentPagerAdapter {
|
|
private SearchTypeAdapter(FragmentManager fm) {
|
super(fm);
|
}
|
|
@Override
|
public Fragment getItem(int position) {
|
FragmentSearch fragment = new FragmentSearch();
|
Bundle args = new Bundle();
|
args.putInt("arg", mTypeList.get(position).getId());//当前页码
|
args.putInt("id", mTypeList.get(position).getId());//ID
|
fragment.setArguments(args);
|
return fragment;
|
}
|
|
@Override
|
public CharSequence getPageTitle(int position) {
|
return mTypeList.get(position % mTypeList.size()).getName();
|
}
|
|
@Override
|
public int getCount() {
|
return mTypeList.size();
|
}
|
|
}
|
|
@Override
|
protected void onDestroy() {
|
super.onDestroy();
|
if (indicator != null && indicator.getChildCount() > 0)
|
indicator.removeAllViews();
|
}
|
}
|