package com.tejia.lijin.app.ui.recommend;
|
|
import android.content.Context;
|
import android.util.Log;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.widget.AdapterView;
|
import android.widget.BaseAdapter;
|
import android.widget.TextView;
|
import android.widget.Toast;
|
|
import com.wpc.library.widget.MyGridView;
|
import com.tejia.lijin.app.R;
|
import com.tejia.lijin.app.entity.Filter;
|
import com.tejia.lijin.app.entity.FilterCondition;
|
|
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/3/16.
|
*/
|
|
public class FilterAdapter extends BaseAdapter {
|
private Context mContext;
|
private List<Filter> mList;
|
private LayoutInflater inflater;
|
|
public FilterAdapter(Context context, List<Filter> list) {
|
this.mContext = context;
|
mList = list;
|
inflater = LayoutInflater.from(context);
|
}
|
|
@Override
|
public int getCount() {
|
return mList == null ? 0 : mList.size();
|
}
|
|
@Override
|
public Object getItem(int position) {
|
return mList.get(position);
|
}
|
|
@Override
|
public long getItemId(int position) {
|
return position;
|
}
|
|
@Override
|
public View getView(final int position, View convertView, ViewGroup parent) {
|
ViewHolder holder = null;
|
if (convertView == null) {
|
holder = new ViewHolder();
|
convertView = inflater.inflate(R.layout.item_filter_board, null);
|
holder.tv_name = convertView.findViewById(R.id.tv_name);
|
holder.tv_more = convertView.findViewById(R.id.tv_more);
|
holder.gridView = convertView.findViewById(R.id.gv_filter);
|
convertView.setTag(holder);
|
} else {
|
holder = (ViewHolder) convertView.getTag();
|
}
|
holder.tv_name.setText(mList.get(position).getName());
|
final List<FilterCondition> aList = new ArrayList<>();
|
final TextView tv = holder.tv_more;
|
tv.setTextColor(mContext.getResources().getColor(R.color.main_text_color));
|
mList.get(position).setMore(false);
|
holder.tv_more.setVisibility(View.GONE);
|
aList.addAll(mList.get(position).getSubIds());
|
final ConditionAdapter adapter = new ConditionAdapter(mContext, aList, mList.get(position).isMore());
|
holder.gridView.setAdapter(adapter);
|
|
holder.tv_more.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
boolean isMore = mList.get(position).isMore();
|
aList.clear();
|
if (isMore) {
|
tv.setTextColor(mContext.getResources().getColor(R.color.gray));
|
for (int i = 0; i < 6; i++) {
|
aList.add(mList.get(position).getSubIds().get(i));
|
}
|
} else {
|
tv.setTextColor(mContext.getResources().getColor(R.color.main_text_color));
|
aList.addAll(mList.get(position).getSubIds());
|
}
|
adapter.notifyDataSetChanged();
|
mList.get(position).setMore(!isMore);
|
}
|
});
|
holder.gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
@Override
|
public void onItemClick(AdapterView<?> parent, View view, int mposition, long id) {
|
if (filters.size() == 0) {
|
addFilter(mList.get(position), mposition);
|
adapter.notifyDataSetChanged();
|
return;
|
}
|
if (mList.get(position).getSelector().equalsIgnoreCase("1")) {
|
if (filters.contains(mList.get(position))) {
|
Toast.makeText(mContext, "包含此类型!", Toast.LENGTH_LONG).show();
|
}
|
}
|
for (int i = 0; i < filters.size(); i++) {
|
if (mList.get(position).getSelector().equalsIgnoreCase("1")) {
|
for (int j = 0; j < filters.get(i).getSubIds().size(); j++) {
|
if (filters.get(i).getSubIds().get(j).getId().equalsIgnoreCase(mList.get(position).getSubIds().get(mposition).getId())) {
|
if (filters.get(i).getSubIds().size() == 1) {
|
filters.remove(i);
|
} else {
|
filters.get(i).getSubIds().remove(j);
|
}
|
adapter.notifyDataSetChanged();
|
return;
|
} else if (i == filters.size() - 1 && !filters.get(i).getSubIds().get(j).getId().equalsIgnoreCase(mList.get(position).getSubIds().get(mposition).getId())) {
|
addFilter(mList.get(position), mposition);
|
adapter.notifyDataSetChanged();
|
return;
|
}
|
}
|
} else {
|
if (filters.get(i).getId().equalsIgnoreCase(mList.get(position).getId())) {
|
for (int j = 0; j < filters.get(i).getSubIds().size(); j++) {
|
if (filters.get(i).getSubIds().get(j).getId().equalsIgnoreCase(mList.get(position).getSubIds().get(mposition).getId())) {
|
filters.remove(i);
|
} else {
|
filters.remove(i);
|
addFilter(mList.get(position), mposition);
|
}
|
adapter.notifyDataSetChanged();
|
return;
|
}
|
} else if (i == filters.size() - 1 && (!filters.get(i).getId().equalsIgnoreCase(mList.get(position).getId()))) {
|
addFilter(mList.get(position), mposition);
|
adapter.notifyDataSetChanged();
|
return;
|
}
|
}
|
}
|
}
|
});
|
return convertView;
|
}
|
|
/**
|
* 加载item点击事件
|
*/
|
|
private void addFilter(Filter info, int mposition) {
|
Filter filter = new Filter();
|
filter.setId(info.getId());
|
filter.setType(info.getType());
|
filter.setSelector(info.getSelector());
|
List<FilterCondition> list = new ArrayList<FilterCondition>();
|
FilterCondition condition = new FilterCondition();
|
condition.setId(info.getSubIds().get(mposition).getId());
|
list.add(condition);
|
filter.setSubIds(list);
|
filters.add(filter);
|
}
|
|
/**
|
* 更多
|
*/
|
|
static class ViewHolder {
|
TextView tv_name;
|
TextView tv_more;
|
MyGridView gridView;
|
}
|
|
public class ConditionAdapter extends BaseAdapter {
|
private List<FilterCondition> wList;
|
private Context wContext;
|
|
public ConditionAdapter(Context context, List<FilterCondition> wList, boolean isMore) {
|
this.wContext = context;
|
this.wList = wList;
|
}
|
|
@Override
|
public int getCount() {
|
return wList == null ? 0 : wList.size();
|
}
|
|
@Override
|
public Object getItem(int position) {
|
return wList.get(position);
|
}
|
|
@Override
|
public long getItemId(int position) {
|
return position;
|
}
|
|
@Override
|
public View getView(final int position, View convertView, ViewGroup parent) {
|
ViewHolder holder = null;
|
if (convertView == null) {
|
holder = new ViewHolder();
|
convertView = LayoutInflater.from(wContext).inflate(R.layout.item_filter_condition, null);
|
holder.tv_name = convertView.findViewById(R.id.tv_name);
|
convertView.setTag(holder);
|
} else {
|
holder = (ViewHolder) convertView.getTag();
|
}
|
holder.tv_name.setText(wList.get(position).getName());
|
holder.tv_name.setTextColor(wContext.getResources().getColor(R.color.black));
|
holder.tv_name.setBackground(wContext.getResources().getDrawable(R.drawable.ic_search_city_bg));
|
for (int i = 0; i < filters.size(); i++) {
|
for (int j = 0; j < filters.get(i).getSubIds().size(); j++) {
|
if (filters.get(i).getSubIds().get(j).getId().equalsIgnoreCase(wList.get(position).getId())) {
|
holder.tv_name.setBackground(wContext.getResources().getDrawable(R.drawable.ic_search_city_bg_light));
|
holder.tv_name.setTextColor(wContext.getResources().getColor(R.color.main_text_color));
|
}
|
}
|
}
|
return convertView;
|
}
|
|
class ViewHolder {
|
TextView tv_name;
|
}
|
}
|
|
public List<Filter> filters = new ArrayList<>();
|
|
public String getFilter() {
|
JSONArray array = new JSONArray();
|
JSONObject obj;
|
for (int i = 0; i < filters.size(); i++) {
|
try {
|
obj = new JSONObject();
|
obj.put("pid", filters.get(i).getId());
|
obj.put("type", filters.get(i).getType());
|
obj.put("id", filters.get(i).getSubIds().get(0).getId());
|
array.put(obj);
|
} catch (JSONException e) {
|
e.printStackTrace();
|
}
|
}
|
Log.i("mResult", "赛选的数据为--" + array.toString());
|
return array.toString();
|
}
|
}
|