package com.bosi.chineseclass.su.ui.fragment;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.Spinner;
import android.widget.SpinnerAdapter;
import android.widget.TextView;
import com.bosi.chineseclass.R;
import com.bosi.chineseclass.su.db.DbUtils;
import com.bosi.chineseclass.su.db.Entity;
import u.aly.s;
import java.util.ArrayList;
/**
* 这个Fragement 其实只会负责一个Filter list , 但会,进行多次Filter, 元数据也可能不同
*
* @author Myjoy
* @date 2015-5-31
* <p>
* 1 . 代表 横起笔 2 . 代表竖起笔 3 . 代表撇起笔 4 . 代表点起笔 5 . 代表横折起笔
* </p>
*/
public class FiterStokeFragment extends AbsFilterFragment implements OnClickListener {
private ArrayList<Entity> mFirstFilterList = new ArrayList<Entity>();
private ArrayList<Entity> mStokesList = new ArrayList<Entity>();
private Spinner mSpinner;
private View mEmptyView;
private GridView mResult;
@Override
void init() {
mSpinner = (Spinner) getActivity().findViewById(R.id.filter_spinner);
mEmptyView = getActivity().findViewById(R.id.text_empty);
getActivity().findViewById(R.id.hen_start).setOnClickListener(this);
getActivity().findViewById(R.id.shu_start).setOnClickListener(this);
getActivity().findViewById(R.id.pie_start).setOnClickListener(this);
getActivity().findViewById(R.id.dian_start).setOnClickListener(this);
getActivity().findViewById(R.id.zhe_start).setOnClickListener(this);
String[] strs = new String[37];
for (int i = 0; i < strs.length; i++) {
if (i == 0) {
strs[0] = "全部";
} else {
strs[i] = String.valueOf(i);
}
}
ArrayAdapter pyAdapter = new ArrayAdapter(getActivity(),
android.R.layout.simple_spinner_item, strs);
pyAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
setSpinnerAdapter(pyAdapter);
mSpinner.setVisibility(View.VISIBLE);
// mSpinner.setOnItemSelectedListener(new SpinnerSelectedListener());
mSpinner.setSelection(0);
mResult = (GridView) getActivity().findViewById(R.id.filter_result);
mResult.setAdapter(new ResultAdapter());
mResult.setVisibility(View.GONE);
mEmptyView.setVisibility(View.VISIBLE);
setResultOnItemClick(mResult);
}
private class ResultAdapter extends BaseAdapter {
@Override
public int getCount() {
if (mStokesList != null) {
return mStokesList.size();
}
return 0;
}
@Override
public Object getItem(int position) {
if (mStokesList != null && mStokesList.size() > 0) {
return mStokesList.size();
}
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
holder = new ViewHolder();
holder.text = (TextView) mInflater.inflate(R.layout.py_grid_item, null, false);
} else {
holder = ((ViewHolder) convertView.getTag());
}
holder.text.setText(mStokesList.get(position).word);
convertView = holder.text;
convertView.setTag(holder);
return convertView;
}
@Override
public void notifyDataSetChanged() {
super.notifyDataSetChanged();
}
private class ViewHolder {
TextView text;
}
}
public void setSpinnerAdapter(SpinnerAdapter adapter) {
mSpinner.setAdapter(adapter);
mSpinner.setOnItemSelectedListener(new StokesSelectedListener());
}
private class StokesSelectedListener implements OnItemSelectedListener {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if (position == 0) {
mStokesList = mFirstFilterList;
} else {
Log.e("print", "StokesSelectedListener");
filterByStoke(String.valueOf(position));
}
((BaseAdapter) (mResult.getAdapter())).notifyDataSetChanged();
mResult.invalidate();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
private void filterByStoke(String stoke) {
mStokesList = new ArrayList<Entity>();
Log.e("print", "-------filterByStoke");
for (int i = 0; i < mFirstFilterList.size(); i++) {
Entity entity = mFirstFilterList.get(i);
Log.e("print", "-------" + entity.stokes);
if (entity.stokes.equals(stoke)) {
Log.e("print", "-------exe");
mStokesList.add(entity);
}
}
}
}
@Override
protected View getBasedView() {
View view = mInflater.inflate(R.layout.dictionary_filter_stoke_layout, null, false);
return view;
}
@Override
public void onClick(View v) {
mEmptyView.setVisibility(View.GONE);
int id = v.getId();
int begin = 0;
switch (id) {
case R.id.hen_start: {
begin = 1;
break;
}
case R.id.shu_start: {
begin = 2;
break;
}
case R.id.pie_start: {
begin = 3;
break;
}
case R.id.dian_start: {
begin = 4;
break;
}
case R.id.zhe_start: {
begin = 5;
break;
}
default:
begin = 0;
break;
}
if (begin != 0) {
mFirstFilterList = DbUtils.getInstance(getActivity()).getFilterListByStoke(
String.valueOf(begin));
mStokesList = mFirstFilterList;
mResult.invalidate();
((BaseAdapter) (mResult.getAdapter())).notifyDataSetChanged();
}
mResult.setVisibility(View.VISIBLE);
}
@Override
public String getSelectedRstWord(int postion) {
return mStokesList.get(postion).word;
}
}