package licola.demo.com.huabandemo.Module.SearchResult;
import android.app.Activity;
import android.content.Intent;
import android.support.design.widget.TabLayout;
import android.support.v7.widget.Toolbar;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import java.util.HashSet;
import java.util.Set;
import butterknife.BindColor;
import butterknife.BindString;
import butterknife.BindView;
import licola.demo.com.huabandemo.API.Fragment.OnBoardFragmentInteractionListener;
import licola.demo.com.huabandemo.API.Fragment.OnPeopleFragmentInteraction;
import licola.demo.com.huabandemo.API.Fragment.OnPinsFragmentInteractionListener;
import licola.demo.com.huabandemo.Base.BaseActivity;
import licola.demo.com.huabandemo.Entity.BoardPinsBean;
import licola.demo.com.huabandemo.Module.User.UserActivity;
import licola.demo.com.huabandemo.Module.SearchResult.SearchPeopleListBean.UsersBean;
import licola.demo.com.huabandemo.Module.BoardDetail.BoardDetailActivity;
import licola.demo.com.huabandemo.Module.ImageDetail.ImageDetailActivity;
import licola.demo.com.huabandemo.R;
import licola.demo.com.huabandemo.Util.Constant;
import licola.demo.com.huabandemo.Util.Logger;
import licola.demo.com.huabandemo.Util.SPUtils;
import licola.demo.com.huabandemo.Entity.PinsMainEntity;
public class SearchResultActivity extends BaseActivity implements
OnPinsFragmentInteractionListener, OnBoardFragmentInteractionListener<BoardPinsBean>
, OnPeopleFragmentInteraction<UsersBean> {
private static final String SEARCHKEY = "KEY";
private String key;//搜索的关键字
@BindString(R.string.title_activity_search_result)
String mTitle;
@BindString(R.string.title_fragment_gather)
String mTitleImage;
@BindString(R.string.title_fragment_board)
String mTitleBoard;
@BindString(R.string.title_fragment_user)
String mTitleUser;
@BindColor(R.color.white)
int mColorTabIndicator;
@BindView(R.id.viewpager_search)
ViewPager mViewPager;
@BindView(R.id.tablayou_search)
TabLayout mTabLayout;
private SectionsPagerAdapter mSectionsPagerAdapter;
@Override
protected int getLayoutId() {
return R.layout.activity_result;
}
@Override
protected String getTAG() {
return this.toString();
}
public static void launch(Activity activity, String key) {
Intent intent = new Intent(activity, SearchResultActivity.class);
intent.putExtra(SEARCHKEY, key);
activity.startActivity(intent);
}
@Override
protected boolean isTranslucentStatusBar() {
return false;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_result);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
key = getIntent().getStringExtra(SEARCHKEY);
Logger.d(key);
saveSearchHistory(key);
initAdapter();
setTitle(String.format(mTitle, key));
}
private void saveSearchHistory(String key) {
//转到这个界面就表示 搜索成功 保存搜索记录
HashSet<String> hashSet = (HashSet<String>) SPUtils.get(mContext, Constant.HISTORYTEXT, new HashSet<String>());
//关键操作 需要在新的集合添加值 然后再提交修改
Set<String> changeData = new HashSet<>(hashSet);
changeData.add(key);
boolean isSuccess = SPUtils.putCommit(mContext, Constant.HISTORYTEXT, changeData);
Logger.d("isSuccess=" + isSuccess);
}
private void initAdapter() {
// Create the adapter that will return a fragment for each of the three
// primary sections of the activity.
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
// Set up the ViewPager with the sections adapter.
// mViewPager.setOffscreenPageLimit(3);
mViewPager.setAdapter(mSectionsPagerAdapter);
mTabLayout.setupWithViewPager(mViewPager);
mTabLayout.setSelectedTabIndicatorColor(mColorTabIndicator);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_result, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onClickPinsItemImage(PinsMainEntity bean, View view) {
ImageDetailActivity.launch(this);
}
@Override
public void onClickPinsItemText(PinsMainEntity bean, View view) {
ImageDetailActivity.launch(this);
}
@Override
public void onClickBoardItemImage(BoardPinsBean bean, View view) {
String boardId = String.valueOf(bean.getBoard_id());
BoardDetailActivity.launch(this, boardId, bean.getTitle());
}
@Override
public void onClickItemUser(UsersBean bean, View view) {
Logger.d();
UserActivity.launch(this, String.valueOf(bean.getUser_id()), bean.getUsername());
}
/**
* A {@link FragmentPagerAdapter} that returns a fragment corresponding to
* one of the sections/tabs/pages.
*/
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
// getItem is called to instantiate the fragment for the given page.
// Return a PlaceholderFragment (defined as a static inner class below).
if (position == 0) {
return ResultPinsFragment.newInstance(key);
} else if (position == 1) {
return ResultBoardFragment.newInstance(key);
} else {
return ResultPeopleFragment.newInstance(key);
}
}
@Override
public int getCount() {
// Show 3 total pages.
return 3;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return mTitleImage;
case 1:
return mTitleBoard;
case 2:
return mTitleUser;
}
return null;
}
}
}