package com.tejia.lijin.app.ui.category;
|
|
import android.content.Context;
|
import android.graphics.drawable.AnimationDrawable;
|
import android.os.Bundle;
|
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
import androidx.recyclerview.widget.GridLayoutManager;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.RecyclerView;
|
import android.util.Log;
|
import android.view.Gravity;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.view.inputmethod.InputMethodManager;
|
import android.widget.AdapterView;
|
import android.widget.EditText;
|
import android.widget.FrameLayout;
|
import android.widget.ImageView;
|
import android.widget.LinearLayout;
|
import android.widget.ListView;
|
import android.widget.PopupWindow;
|
import android.widget.TextView;
|
import android.widget.Toast;
|
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.google.gson.reflect.TypeToken;
|
import com.wpc.library.okhttp.OkHttpUtils;
|
import com.wpc.library.recyclerviewhelper.DividerItemDecoration;
|
import com.wpc.library.util.NetUtils;
|
import com.wpc.library.util.common.DimenUtils;
|
import com.wpc.library.util.common.StringUtils;
|
import com.tejia.lijin.app.BasicTextHttpResponseHandler;
|
import com.tejia.lijin.app.R;
|
import com.tejia.lijin.app.ShoppingApi;
|
import com.tejia.lijin.app.entity.TaoBaoGoodsBrief;
|
import com.tejia.lijin.app.ui.BaseActivity;
|
import com.tejia.lijin.app.util.TopStatusSettings;
|
|
import org.apache.http.Header;
|
import org.json.JSONArray;
|
import org.json.JSONException;
|
import org.json.JSONObject;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* Created by weikou2015 on 2017/2/21.
|
*/
|
|
public class CategoryActivity extends BaseActivity implements View.OnClickListener {
|
private SwipeRefreshLayout rl_search;
|
private RecyclerView rv_search;
|
private CategoryAdapter2 adapter;
|
CateMultipleAdapter mulAdapter;
|
PopupWindow pw_filter;
|
|
private TextView tv_left;
|
private TextView tv_middle;
|
private LinearLayout ll_sale_num;
|
private TextView tv_sale_num;
|
private LinearLayout ll_price;
|
private TextView tv_price;
|
private View bottom;
|
private ImageView iv_loading;
|
private TextView tv_loading;
|
private ImageView iv_price;
|
private EditText et_low_price;
|
private EditText et_high_price;
|
private EditText et_sale_num_select;
|
private LinearLayout ll_confirm, ll_no_data, ll_request_failture, ll_no_net;
|
private FrameLayout fl_recommend, fl_category;
|
private TextView tv_recommend;
|
private LinearLayout ll_multiple, ll_sale_num_confirm;
|
private TextView tv_multiple;
|
private ImageView iv_multiple;
|
private boolean isPrice = false;
|
private ImageView iv_slid_top;
|
private View v_multiple;
|
|
private List<String> mulList = new ArrayList<>();
|
|
String tag1 = "class/getSubGoods";
|
|
@Override
|
protected void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
setContentView(R.layout.activity_third_category);
|
TopStatusSettings.setStatusViewAndDeepColor(this);
|
et_low_price = findViewById(R.id.et_low_price);
|
et_high_price = findViewById(R.id.et_high_price);
|
ll_confirm = findViewById(R.id.ll_confirm);
|
rl_search = findViewById(R.id.rl_search);
|
tv_left = findViewById(R.id.tv_top_bar_left);
|
tv_middle = findViewById(R.id.tv_top_bar_middle);
|
ll_sale_num = findViewById(R.id.ll_sale_num);
|
tv_sale_num = findViewById(R.id.tv_sale_num);
|
ll_price = findViewById(R.id.ll_price);
|
tv_price = findViewById(R.id.tv_price);
|
iv_price = findViewById(R.id.iv_sort);
|
|
fl_recommend = findViewById(R.id.fl_recommend);
|
tv_recommend = findViewById(R.id.tv_recommend);
|
ll_multiple = findViewById(R.id.ll_multiple);
|
ll_sale_num_confirm = findViewById(R.id.ll_sale_num_confirm);
|
et_sale_num_select = findViewById(R.id.et_sale_num_select);
|
tv_multiple = findViewById(R.id.tv_multiple);
|
iv_multiple = findViewById(R.id.iv_multiple);
|
iv_slid_top = findViewById(R.id.iv_slid_top);
|
v_multiple = findViewById(R.id.v_multiple);
|
fl_category = findViewById(R.id.fl_category);
|
ll_no_net = findViewById(R.id.ll_no_net);
|
ll_no_data = findViewById(R.id.ll_no_data);
|
ll_request_failture = findViewById(R.id.ll_request_failture);
|
rv_search = findViewById(R.id.rv_search);
|
|
adapter = new CategoryAdapter2(this, wList, null, "secondclass");
|
rv_search.setAdapter(adapter);
|
|
setRecyclerLines(1, isFirst);
|
|
bottom = LayoutInflater.from(this).inflate(R.layout.item_recyclerview_bottom, null);
|
adapter.addFooterView(bottom);
|
tv_loading = bottom.findViewById(R.id.tv_loading);
|
iv_loading = bottom.findViewById(R.id.iv_loading);
|
AnimationDrawable animationDrawable = (AnimationDrawable) getResources().getDrawable(
|
R.drawable.anim_list_loading);
|
iv_loading.setImageDrawable(animationDrawable);
|
animationDrawable.start();
|
// Glide.with(this).load(R.drawable.gif_loading).into(iv_loading);
|
bottom.setVisibility(View.GONE);
|
|
String title = getIntent().getStringExtra("catename") + "";
|
tv_middle.setText(title);
|
// tv_left.setText("返回");
|
iv_slid_top.setOnClickListener(this);
|
tv_left.setOnClickListener(this);
|
ll_sale_num.setOnClickListener(this);
|
ll_price.setOnClickListener(this);
|
ll_confirm.setOnClickListener(this);
|
fl_recommend.setOnClickListener(this);
|
ll_sale_num_confirm.setOnClickListener(this);
|
ll_multiple.setOnClickListener(this);
|
|
float hRatio = 260 / 720f;
|
float wRatio = 23 / 720f;
|
int bottomPo = (int) (DimenUtils.getScreenWidth(this) * hRatio);
|
int rightPo = (int) (DimenUtils.getScreenWidth(this) * wRatio);
|
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(DimenUtils.dip2px(this, 40), DimenUtils.dip2px(this, 40));
|
params.setMargins(0, 0, rightPo, bottomPo);
|
params.gravity = Gravity.BOTTOM | Gravity.RIGHT;
|
iv_slid_top.setLayoutParams(params);
|
tv_recommend.setTextColor(getResources().getColor(R.color.main_text_color));
|
findViewById(R.id.ll_price_input).setVisibility(View.GONE);
|
findViewById(R.id.ll_sale_num_input).setVisibility(View.GONE);
|
rl_search.setColorSchemeColors(getResources().getColor(R.color.theme));
|
rl_search.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
|
@Override
|
public void onRefresh() {
|
page = 1;
|
// wList.clear();//清理数据后 在向上滑动 会数组越位
|
setData(page);
|
}
|
});
|
rv_search.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
@Override
|
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
|
super.onScrollStateChanged(recyclerView, newState);
|
LinearLayoutManager manager = (LinearLayoutManager) recyclerView.getLayoutManager();
|
int first = manager.findFirstVisibleItemPosition();
|
int last = manager.findLastVisibleItemPosition();
|
int total = manager.getItemCount();
|
if (newState == RecyclerView.SCROLL_STATE_IDLE) {
|
if (first == 0) {
|
iv_slid_top.setVisibility(View.GONE);
|
}
|
if (last == total - 1 && wList.size() < count && isLoad) {
|
page++;
|
isLoad = false;
|
iv_loading.setVisibility(View.VISIBLE);
|
tv_loading.setText("正在加载更多数据");
|
setData(page);
|
}
|
} else {
|
iv_slid_top.setVisibility(View.GONE);
|
}
|
}
|
|
@Override
|
public void onScrolled(RecyclerView recyclerView, int dx, final int dy) {
|
super.onScrolled(recyclerView, dx, dy);
|
|
if (Math.abs(dy) > 10) {
|
if (isPrice) {
|
findViewById(R.id.ll_price_input).setVisibility(View.VISIBLE);
|
} else {
|
findViewById(R.id.ll_price_input).setVisibility(View.GONE);
|
}
|
if (dy > 0) {
|
iv_slid_top.setVisibility(View.GONE);
|
} else {
|
iv_slid_top.setVisibility(View.VISIBLE);
|
}
|
}
|
}
|
});
|
|
initPopubWindow();
|
setData(page);
|
}
|
|
private void initPopubWindow() {
|
View customView = getLayoutInflater().inflate(R.layout.item_filter_pw,
|
null, false);
|
// 创建PopupWindow实例,200,150分别是宽度和高度
|
pw_filter = new PopupWindow(customView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, true);
|
// 设置动画效果 [R.style.AnimationFade 是自己事先定义好的]
|
// pw_filter.setAnimationStyle(R.style.pop_multiple);
|
pw_filter.setTouchable(true);
|
pw_filter.setOutsideTouchable(false);
|
pw_filter.setFocusable(false);
|
ListView lv = customView.findViewById(R.id.lv_filter_pw);
|
mulList.add("综合");
|
mulList.add("只看有优惠券的商品");
|
mulList.add("只看天猫店铺的商品");
|
mulAdapter = new CateMultipleAdapter(this, mulList);
|
lv.setAdapter(mulAdapter);
|
|
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
@Override
|
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
mulAdapter.setSelectItem(position);
|
mulAdapter.notifyDataSetChanged();
|
order = 1;
|
if (position == 0) {
|
order = 4;
|
fastFillters.clear();
|
} else if (position == 1) {
|
if (fastFillters.contains("quantype")) {
|
fastFillters.remove("quantype");
|
} else {
|
fastFillters.add("quantype");
|
}
|
} else if (position == 2) {
|
if (fastFillters.contains("shoptype")) {
|
fastFillters.remove("shoptype");
|
} else {
|
fastFillters.add("shoptype");
|
}
|
}
|
isPrice = false;
|
page = 1;
|
isDown = false;
|
iv_multiple.setImageResource(R.drawable.ic_multiple_close);
|
setData(page);
|
pw_filter.dismiss();
|
}
|
});
|
pw_filter.setOnDismissListener(new PopupWindow.OnDismissListener() {
|
@Override
|
public void onDismiss() {
|
iv_multiple.setImageResource(R.drawable.ic_multiple_close);
|
v_multiple.setVisibility(View.GONE);
|
}
|
|
});
|
v_multiple.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
pw_filter.dismiss();
|
}
|
});
|
}
|
|
List<TaoBaoGoodsBrief> wList = new ArrayList<>();
|
int page = 1;
|
int count = 1;
|
private int order = 0;
|
private String totalSales = "0";
|
private boolean isLoad = false;
|
|
public String getFastFilter() {
|
JSONArray array = new JSONArray();
|
JSONObject obj;
|
for (int i = 0; i < fastFillters.size(); i++) {
|
try {
|
obj = new JSONObject();
|
obj.put("type", fastFillters.get(i));
|
array.put(obj);
|
} catch (JSONException e) {
|
e.printStackTrace();
|
}
|
}
|
return array.toString();
|
}
|
|
private void setData(final int mPage) {
|
Log.i("mResult", "价格排序方式---" + order);
|
String cateId = getIntent().getStringExtra("cateId");
|
if (cateId != null)
|
ShoppingApi.getThirdCategory(CategoryActivity.this, page + "", cateId
|
, getFastFilter(),
|
order + "", min, max, totalSales, new BasicTextHttpResponseHandler() {
|
|
@Override
|
public void onStart() {
|
super.onStart();
|
if (page == 1) {
|
rl_search.setRefreshing(true);
|
}
|
if (mPage > 1) {
|
bottom.setVisibility(View.VISIBLE);
|
} else {
|
bottom.setVisibility(View.GONE);
|
}
|
}
|
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
bottom.setVisibility(View.GONE);
|
if (jsonObject.optString("code").equalsIgnoreCase("0")) {
|
Gson gson = new GsonBuilder().serializeNulls().create();
|
List<TaoBaoGoodsBrief> list = gson.fromJson(
|
jsonObject.optJSONObject("data").optJSONArray("result").toString(),
|
new TypeToken<List<TaoBaoGoodsBrief>>() {
|
}.getType());
|
if (mPage == 0 && wList.size() > 0)
|
wList.clear();
|
if (list.size() > 0) {
|
isLoad = true;
|
}
|
wList.addAll(list);
|
adapter.notifyDataSetChanged();
|
// adapter.notifyItemRangeChanged(wList.size() - list.size(), list.size());//倒序批量刷新列表
|
if (mPage == 0 && wList.size() > 0) {
|
rv_search.getLayoutManager().scrollToPosition(0);
|
}
|
|
count = Integer.parseInt(jsonObject.optJSONObject("data").optString("count"));
|
if (wList.size() == count) {
|
bottom.setVisibility(View.VISIBLE);
|
iv_loading.setVisibility(View.GONE);
|
tv_loading.setText(getResources().getString(R.string.list_no_more));
|
}
|
requestState(wList.size() == 0 ? 1 : 0);
|
} else {
|
if (wList.size() == 0)
|
requestState(1);
|
}
|
}
|
|
@Override
|
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
|
super.onFailure(statusCode, headers, responseString, throwable);
|
bottom.setVisibility(View.GONE);
|
if (wList.size() == 0) {
|
if (NetUtils.getNetworkState(CategoryActivity.this).equalsIgnoreCase(NetUtils.NETWORK_NONE)) {
|
requestState(3);
|
} else {
|
requestState(2);
|
}
|
} else {
|
if (NetUtils.getNetworkState(CategoryActivity.this).equalsIgnoreCase(NetUtils.NETWORK_NONE)) {
|
// SingleToast.showToast(CategoryActivity.this, "网络未连接,请检测网络设置");
|
Toast.makeText(CategoryActivity.this, "网络未连接,请检测网络设置", Toast.LENGTH_SHORT).show();
|
} else {
|
// SingleToast.showToast(CategoryActivity.this, "网络连接异常,请检测网络设置");
|
Toast.makeText(CategoryActivity.this, "网络连接异常,请检测网络设置", Toast.LENGTH_SHORT).show();
|
}
|
}
|
|
}
|
|
@Override
|
public void onFinish() {
|
super.onFinish();
|
rl_search.setRefreshing(false);
|
}
|
});
|
}
|
|
private boolean isDown = false;
|
private boolean isFirst = true;
|
String min = "";
|
String max = "";
|
List<String> fastFillters = new ArrayList<>();
|
|
@Override
|
public void onClick(View v) {
|
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
|
if (imm != null) {
|
imm.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(),
|
0);
|
}
|
switch (v.getId()) {
|
case R.id.tv_top_bar_left:
|
finish();
|
break;
|
case R.id.fl_recommend:
|
hidePwFilter();
|
findViewById(R.id.ll_price_input).setVisibility(View.GONE);
|
findViewById(R.id.ll_sale_num_input).setVisibility(View.GONE);
|
isPrice = false;
|
wList.clear();
|
adapter.notifyDataSetChanged();
|
order = 0;
|
page = 1;
|
min = "";
|
max = "";
|
totalSales = "";
|
isDown = false;
|
fastFillters.clear();
|
iv_multiple.setImageResource(R.drawable.ic_multiple_unselected);
|
iv_price.setImageResource(R.mipmap.ic_sort_no_selected);
|
tv_recommend.setTextColor(getResources().getColor(R.color.main_text_color));
|
tv_multiple.setTextColor(getResources().getColor(R.color.black));
|
tv_price.setTextColor(getResources().getColor(R.color.black));
|
tv_sale_num.setTextColor(getResources().getColor(R.color.black));
|
setData(page);
|
break;
|
case R.id.ll_multiple:
|
if (order == 4 || order == 1) {
|
if (pw_filter.isShowing()) {
|
v_multiple.setVisibility(View.GONE);
|
pw_filter.dismiss();
|
iv_multiple.setImageResource(R.drawable.ic_multiple_close);
|
} else {
|
v_multiple.setVisibility(View.VISIBLE);
|
pw_filter.showAsDropDown(ll_multiple);
|
iv_multiple.setImageResource(R.drawable.ic_multiple_open);
|
}
|
} else {
|
iv_multiple.setImageResource(R.drawable.ic_multiple_close);
|
}
|
findViewById(R.id.ll_price_input).setVisibility(View.GONE);
|
findViewById(R.id.ll_sale_num_input).setVisibility(View.GONE);
|
iv_price.setImageResource(R.mipmap.ic_sort_no_selected);
|
tv_recommend.setTextColor(getResources().getColor(R.color.black));
|
tv_multiple.setTextColor(getResources().getColor(R.color.main_text_color));
|
tv_price.setTextColor(getResources().getColor(R.color.black));
|
tv_sale_num.setTextColor(getResources().getColor(R.color.black));
|
order = 4;
|
fastFillters.clear();
|
isPrice = false;
|
page = 1;
|
isDown = false;
|
setData(page);
|
break;
|
case R.id.ll_price:
|
hidePwFilter();
|
isPrice = true;
|
findViewById(R.id.ll_price_input).setVisibility(View.VISIBLE);
|
findViewById(R.id.ll_sale_num_input).setVisibility(View.GONE);
|
wList.clear();
|
adapter.notifyDataSetChanged();
|
page = 1;
|
if (isDown) {
|
order = 2;
|
iv_price.setImageResource(R.mipmap.ic_grade_down);
|
} else {
|
order = 3;
|
iv_price.setImageResource(R.mipmap.ic_sort_ascending);
|
}
|
isDown = !isDown;
|
iv_multiple.setImageResource(R.drawable.ic_multiple_unselected);
|
tv_recommend.setTextColor(getResources().getColor(R.color.black));
|
tv_multiple.setTextColor(getResources().getColor(R.color.black));
|
tv_price.setTextColor(getResources().getColor(R.color.main_text_color));
|
tv_sale_num.setTextColor(getResources().getColor(R.color.black));
|
|
setData(page);
|
break;
|
case R.id.ll_confirm:
|
if ((!StringUtils.isEmpty(et_low_price.getText().toString())) && (!StringUtils.isEmpty(et_high_price.getText().toString())) && Float.parseFloat(et_low_price.getText().toString()) > Float.parseFloat(et_high_price.getText().toString())) {
|
String min = et_low_price.getText().toString();
|
et_low_price.setText(et_high_price.getText().toString());
|
et_high_price.setText(min);
|
}
|
min = et_low_price.getText().toString();
|
max = et_high_price.getText().toString();
|
isPrice = false;
|
page = 1;
|
setData(page);
|
break;
|
case R.id.ll_sale_num:
|
hidePwFilter();
|
findViewById(R.id.ll_price_input).setVisibility(View.GONE);
|
findViewById(R.id.ll_sale_num_input).setVisibility(View.VISIBLE);
|
isPrice = false;
|
wList.clear();
|
adapter.notifyDataSetChanged();
|
order = 1;
|
page = 1;
|
isDown = false;
|
iv_price.setImageResource(R.mipmap.ic_sort_no_selected);
|
iv_multiple.setImageResource(R.drawable.ic_multiple_unselected);
|
tv_recommend.setTextColor(getResources().getColor(R.color.black));
|
tv_multiple.setTextColor(getResources().getColor(R.color.black));
|
tv_price.setTextColor(getResources().getColor(R.color.black));
|
tv_sale_num.setTextColor(getResources().getColor(R.color.main_text_color));
|
|
setData(page);
|
break;
|
case R.id.ll_sale_num_confirm:
|
if (StringUtils.isEmpty(et_sale_num_select.getText().toString())) {
|
Toast.makeText(CategoryActivity.this, "请输入最低月销量再确认", Toast.LENGTH_SHORT).show();
|
break;
|
}
|
totalSales = et_sale_num_select.getText().toString();
|
setData(page);
|
break;
|
case R.id.iv_slid_top:
|
rv_search.getLayoutManager().scrollToPosition(0);
|
break;
|
}
|
}
|
|
private void setRecyclerLines(final int lines, boolean first) {
|
GridLayoutManager linearLayoutManager = new GridLayoutManager(this, lines);
|
rv_search.setLayoutManager(linearLayoutManager);
|
|
DividerItemDecoration hDivider = new DividerItemDecoration();
|
hDivider.setNumColumn(lines);
|
if (first) {
|
hDivider.setSize(DimenUtils.dip2px(this, 2));
|
isFirst = false;
|
} else {
|
hDivider.setSize(DimenUtils.dip2px(this, 0));
|
}
|
if (lines > 1) {
|
rl_search.setPadding(DimenUtils.dip2px(this, 5),
|
0, DimenUtils.dip2px(this, 5), 0);
|
// rv_search.setBackgroundColor(getResources().getColor(R.color.register_gray));
|
} else {
|
rl_search.setPadding(0, 0, 0, 0);
|
// rv_search.setBackgroundColor(getResources().getColor(R.color.white));
|
}
|
rv_search.addItemDecoration(hDivider);
|
}
|
|
private void hidePwFilter() {
|
if (pw_filter.isShowing()) {
|
pw_filter.dismiss();
|
}
|
v_multiple.setVisibility(View.GONE);
|
}
|
|
/**
|
* 请求状态 0 数据正常展示;1 返回数据为空;2 网络请求失败;3 没有连接网络
|
*
|
* @param state
|
*/
|
private void requestState(int state) {
|
fl_category.setVisibility(state == 0 ? View.VISIBLE : View.GONE);
|
ll_no_data.setVisibility(state == 1 ? View.VISIBLE : View.GONE);
|
ll_request_failture.setVisibility(state == 2 ? View.VISIBLE : View.GONE);
|
ll_no_net.setVisibility(state == 3 ? View.VISIBLE : View.GONE);
|
}
|
|
@Override
|
protected void onDestroy() {
|
super.onDestroy();
|
OkHttpUtils.getInstance().cancelTag(tag1);
|
}
|
}
|