package com.dreamspace.uucampus.ui.activity.Search;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import com.dreamspace.uucampus.R;
import com.dreamspace.uucampus.adapter.search.SearchGoodsAdapter;
import com.dreamspace.uucampus.adapter.search.SearchHistoryAdapter;
import com.dreamspace.uucampus.adapter.search.SearchIdleAdapter;
import com.dreamspace.uucampus.adapter.search.SearchShopAdapter;
import com.dreamspace.uucampus.api.ApiManager;
import com.dreamspace.uucampus.common.SharePreference;
import com.dreamspace.uucampus.common.utils.CommonUtils;
import com.dreamspace.uucampus.common.utils.NetUtils;
import com.dreamspace.uucampus.model.GoodsItem;
import com.dreamspace.uucampus.model.IdleItem;
import com.dreamspace.uucampus.model.ShopItem;
import com.dreamspace.uucampus.model.api.SearchGoodsRes;
import com.dreamspace.uucampus.model.api.SearchIdleRes;
import com.dreamspace.uucampus.model.api.SearchShopRes;
import com.dreamspace.uucampus.ui.activity.FreeGoods.FreeGoodsDetailActivity;
import com.dreamspace.uucampus.ui.activity.Market.GoodDetailAct;
import com.dreamspace.uucampus.ui.activity.Market.ShopShowGoodsAct;
import com.dreamspace.uucampus.ui.base.AbsActivity;
import com.dreamspace.uucampus.ui.dialog.ProgressDialog;
import com.dreamspace.uucampus.widget.LoadMoreListView;
import java.util.ArrayList;
import java.util.List;
import butterknife.Bind;
import butterknife.ButterKnife;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
/**
* Created by money on 2015/11/19.
*/
public class SearchResultMoreActivity extends AbsActivity {
@Bind(R.id.search_text)
EditText searchText;
@Bind(R.id.search_img)
ImageView searchImg;
@Bind(R.id.search_goods_more_linear)
LinearLayout searchGoodsMoreLinear;
@Bind(R.id.search_idle_more_linear)
LinearLayout searchIdleMoreLinear;
@Bind(R.id.search_shop_more_linear)
LinearLayout searchShopMoreLinear;
@Bind(R.id.search_more_failed_linear)
LinearLayout searchMoreFailedLinear;
@Bind(R.id.search_goods_more_list)
LoadMoreListView searchGoodsMoreList;
@Bind(R.id.search_idle_more_list)
LoadMoreListView searchIdleMoreList;
@Bind(R.id.search_shop_more_list)
LoadMoreListView searchShopMoreList;
@Bind(R.id.search_more_history_list)
ListView searchMoreHistoryList;
@Bind(R.id.search_more_history_divider)
View searchMoreHistoryDivider;
@Bind(R.id.search_more_history_delete_linear)
LinearLayout searchMoreHistoryDeleteLinear;
@Bind(R.id.search_more_history_linear)
LinearLayout searchMoreHistoryLinear;
private String keyWord;
private static int category;
private int goodPage = 1;
private int idlePage = 1;
private int shopPage = 1;
private ProgressDialog pd;
private SearchHistoryAdapter searchHistoryAdapter;
private SearchGoodsAdapter searchGoodsAdapter;
private SearchIdleAdapter searchIdleAdapter;
private SearchShopAdapter searchShopAdapter;
//保存搜索结果
private List<GoodsItem> goodsItems;
private List<IdleItem> idleItems;
private List<ShopItem> shopItems;
@Override
protected int getContentView() {
return R.layout.activity_search_result_more;
}
@Override
protected void prepareDatas() {
ButterKnife.bind(this);
Bundle bundle = getIntent().getExtras();
category = bundle.getInt("category");
keyWord = bundle.getString("key");
searchText.setText(keyWord);
pd = new ProgressDialog(this);
pd.show();
switch (category) {
case 0:
goodsItems = new ArrayList<>();
searchGood();
break;
case 1:
idleItems = new ArrayList<>();
searchIdle();
break;
case 2:
shopItems = new ArrayList<>();
searchShop();
break;
}
}
@Override
protected void initViews() {
searchMoreHistoryLinear.setVisibility(View.GONE);
searchGoodsMoreLinear.setVisibility(View.GONE);
searchIdleMoreLinear.setVisibility(View.GONE);
searchShopMoreLinear.setVisibility(View.GONE);
searchMoreFailedLinear.setVisibility(View.GONE);
initListeners();
}
private void search() {
pd.show();
switch (category) {
case 0:
goodsItems = new ArrayList<>();
goodPage = 1;
searchGoodsMoreLinear.setVisibility(View.GONE);
searchMoreFailedLinear.setVisibility(View.GONE);
searchGood();
break;
case 1:
idleItems = new ArrayList<>();
idlePage = 1;
searchIdleMoreLinear.setVisibility(View.GONE);
searchMoreFailedLinear.setVisibility(View.GONE);
searchIdle();
break;
case 2:
shopItems = new ArrayList<>();
shopPage = 1;
searchShopMoreLinear.setVisibility(View.GONE);
searchMoreFailedLinear.setVisibility(View.GONE);
searchShop();
break;
}
}
private void initListeners() {
searchImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
searchMoreHistoryLinear.setVisibility(View.GONE);
keyWord = searchText.getText().toString();
searchMoreFailedLinear.setVisibility(View.GONE);
if (!CommonUtils.isEmpty(keyWord)) {
SharePreference.searchHistory.add(keyWord);
search();
} else {
showToast("搜索关键字不能为空");
}
}
});
searchText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//点击后显示历史记录,如果没有历史记录则不显示
//隐藏其他列表
if (SharePreference.searchHistory.size() != 0) {
searchMoreHistoryDivider.setVisibility(View.VISIBLE);
searchMoreHistoryDeleteLinear.setVisibility(View.VISIBLE);
searchHistory();
}
}
});
searchMoreHistoryDeleteLinear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//点击后清除历史记录
SharePreference.searchHistory = new ArrayList<String>();
searchHistory();
searchMoreHistoryDivider.setVisibility(View.GONE);
searchMoreHistoryDeleteLinear.setVisibility(View.GONE);
}
});
searchMoreHistoryList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
if (searchHistoryAdapter != null) {
String temp = searchHistoryAdapter.getItem(i);
searchText.setText(temp);
keyWord = temp;
search();
}
}
});
searchGoodsMoreList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
if (searchGoodsAdapter != null) {
Bundle bundle = new Bundle();
bundle.putString(GoodDetailAct.GOOD_ID, searchGoodsAdapter.getItem(i).getGoods_id());
readyGo(GoodDetailAct.class, bundle);
}
}
});
searchShopMoreList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
if (searchShopAdapter != null) {
Bundle bundle = new Bundle();
bundle.putString(ShopShowGoodsAct.SHOP_ID, searchShopAdapter.getItem(i).getShop_id());
bundle.putString(ShopShowGoodsAct.SHOP_NAME, searchShopAdapter.getItem(i).getName());
readyGo(ShopShowGoodsAct.class, bundle);
}
}
});
searchIdleMoreList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
if (searchIdleAdapter != null) {
Bundle bundle = new Bundle();
bundle.putString(FreeGoodsDetailActivity.EXTRA_IDLE_ID, searchIdleAdapter.getItem(i).getIdle_id());
readyGo(FreeGoodsDetailActivity.class, bundle);
}
}
});
//上拉加载
searchGoodsMoreList.setOnLoadMoreListener(new LoadMoreListView.OnLoadMoreListener() {
@Override
public void onLoadMore() {
switch (category) {
case 0:
searchGoodsMoreList.setLoading(true);
goodPage++;
searchGood();
break;
case 1:
searchIdleMoreList.setLoading(true);
idlePage++;
searchIdle();
break;
case 2:
searchShopMoreList.setLoading(true);
shopPage++;
searchShop();
break;
}
}
});
}
@Override
protected View getLoadingTargetView() {
return null;
}
private void searchHistory() {
searchMoreHistoryLinear.setVisibility(View.VISIBLE);
searchMoreHistoryDivider.setVisibility(View.VISIBLE);
searchGoodsMoreLinear.setVisibility(View.GONE);
searchShopMoreLinear.setVisibility(View.GONE);
searchIdleMoreLinear.setVisibility(View.GONE);
searchMoreFailedLinear.setVisibility(View.GONE);
//只显示十条历史记录
List<String> histories = new ArrayList<>();
List<String> temp = SharePreference.searchHistory;
int n = temp.size();
if (n > 10) {
for (int i = 0; i < 10; i++) {
histories.add(temp.get(n - i - 1));
}
} else {
for (int i = 0; i < n; i++) {
histories.add(temp.get(n - i - 1));
}
}
searchHistoryAdapter = new SearchHistoryAdapter(getApplicationContext(), histories, SearchHistoryAdapter.ViewHolder.class);
searchMoreHistoryList.setAdapter(searchHistoryAdapter);
}
private void searchGood() {
if (NetUtils.isNetworkConnected(this)) {
searchGoodsMoreList.setLoading(false);
ApiManager.getService(this).searchGoods(keyWord, null, null, null, null, null, goodPage, "东南大学九龙湖校区", new Callback<SearchGoodsRes>() {
@Override
public void success(SearchGoodsRes searchGoodsRes, Response response) {
//历史记录隐藏,搜索关键词加入历史记录
searchMoreHistoryLinear.setVisibility(View.GONE);
goodsItems = searchGoodsRes.getResult();
if (goodsItems.size() != 0) {
searchGoodsMoreLinear.setVisibility(View.VISIBLE);
if (goodPage == 1) {
//第一次加载两页,尽量撑满屏幕
searchGoodsAdapter = new SearchGoodsAdapter(getApplicationContext(), goodsItems, SearchGoodsAdapter.ViewHolder.class);
goodPage++;
searchGood();
} else {
searchGoodsAdapter.addEntities(goodsItems);
}
searchGoodsMoreList.setAdapter(searchGoodsAdapter);
} else {
if (goodPage == 1) {
searchMoreFailedLinear.setVisibility(View.VISIBLE);
}
}
pd.dismiss();
}
@Override
public void failure(RetrofitError error) {
showInnerError(error);
pd.dismiss();
}
});
} else {
showNetWorkError();
pd.dismiss();
}
}
private void searchIdle() {
if (NetUtils.isNetworkConnected(this)) {
searchIdleMoreList.setLoading(false);
ApiManager.getService(this).searchIdle(keyWord, null, null, idlePage, "东南大学九龙湖校区", new Callback<SearchIdleRes>() {
@Override
public void success(SearchIdleRes searchIdleRes, Response response) {
//历史记录隐藏,搜索关键词加入历史记录
searchMoreHistoryLinear.setVisibility(View.GONE);
idleItems = searchIdleRes.getResult();
if (idleItems.size() != 0) {
searchIdleMoreLinear.setVisibility(View.VISIBLE);
if (idlePage == 1) {
searchIdleAdapter = new SearchIdleAdapter(getApplicationContext(), idleItems, SearchIdleAdapter.ViewHolder.class);
idlePage++;
searchIdle();
} else {
searchIdleAdapter.addEntities(idleItems);
}
searchIdleMoreList.setAdapter(searchIdleAdapter);
} else {
if (idlePage == 1) {
searchMoreFailedLinear.setVisibility(View.VISIBLE);
}
}
pd.dismiss();
}
@Override
public void failure(RetrofitError error) {
showInnerError(error);
pd.dismiss();
}
});
} else {
showNetWorkError();
pd.dismiss();
}
}
private void searchShop() {
if (NetUtils.isNetworkConnected(this)) {
searchShopMoreList.setLoading(false);
ApiManager.getService(this).searchShop(keyWord, null, null, shopPage, "东南大学九龙湖校区", new Callback<SearchShopRes>() {
@Override
public void success(SearchShopRes searchShopRes, Response response) {
//历史记录隐藏,搜索关键词加入历史记录
searchMoreHistoryLinear.setVisibility(View.GONE);
shopItems = searchShopRes.getResult();
if (shopItems.size() != 0) {
searchShopMoreLinear.setVisibility(View.VISIBLE);
if (shopPage == 1) {
searchShopAdapter = new SearchShopAdapter(getApplicationContext(), shopItems, SearchShopAdapter.ViewHolder.class);
shopPage++;
searchShop();
} else {
searchShopAdapter.addEntities(shopItems);
}
searchShopMoreList.setAdapter(searchShopAdapter);
pd.dismiss();
} else {
if (shopPage == 1) {
searchMoreFailedLinear.setVisibility(View.VISIBLE);
}
}
pd.dismiss();
}
@Override
public void failure(RetrofitError error) {
showInnerError(error);
pd.dismiss();
}
});
} else {
showNetWorkError();
pd.dismiss();
}
}
}