package mcxtzhang.itemdecorationdemo;
import android.app.Activity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
import mcxtzhang.itemdecorationdemo.decoration.DividerItemDecoration;
import mcxtzhang.itemdecorationdemo.decoration.TitleItemDecoration;
import mcxtzhang.itemdecorationdemo.widget.IndexBar;
public class MainActivity extends Activity {
private static final String TAG = "zxt";
private RecyclerView mRv;
private RecyclerView.Adapter mAdapter;
private LinearLayoutManager mManager;
private List<CityBean> mDatas;
private TitleItemDecoration mDecoration;
/**
* 右侧边栏导航区域
*/
private IndexBar mIndexBar;
/**
* 显示指示器DialogText
*/
private TextView mTvSideBarHint;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRv = (RecyclerView) findViewById(R.id.rv);
mRv.setLayoutManager(mManager = new LinearLayoutManager(this));
//initDatas();
initDatas(getResources().getStringArray(R.array.provinces));
mRv.setAdapter(mAdapter = new CityAdapter(this, mDatas));
mRv.addItemDecoration(mDecoration = new TitleItemDecoration(this, mDatas));
//如果add两个,那么按照先后顺序,依次渲染。
//mRv.addItemDecoration(new TitleItemDecoration2(this,mDatas));
mRv.addItemDecoration(new DividerItemDecoration(MainActivity.this, DividerItemDecoration.VERTICAL_LIST));
//使用indexBar
mTvSideBarHint = (TextView) findViewById(R.id.tvSideBarHint);//HintTextView
mIndexBar = (IndexBar) findViewById(R.id.indexBar);//IndexBar
mIndexBar.setmPressedShowTextView(mTvSideBarHint)//设置HintTextView
.setNeedRealIndex(true)//设置需要真实的索引
.setmLayoutManager(mManager)//设置RecyclerView的LayoutManager
.setmSourceDatas(mDatas);//设置数据源
}
/**
* 组织数据源
*
* @param data
* @return
*/
private void initDatas(String[] data) {
mDatas = new ArrayList<>();
for (int i = 0; i < data.length; i++) {
CityBean cityBean = new CityBean();
cityBean.setCity(data[i]);//设置城市名称
mDatas.add(cityBean);
}
}
/*
*//**
* 组织数据源
*
* @param data
* @return
*//*
private void initDatas(String[] data) {
mDatas = new ArrayList<>();
mSideBarDatas = new ArrayList<>();//导航栏数据源
for (int i = 0; i < data.length; i++) {
CityBean cityBean = new CityBean();
cityBean.setCity(data[i]);//设置城市名称
StringBuilder pySb = new StringBuilder();
//取出首个char得到它的拼音
for (int i1 = 0; i1 < data[i].length(); i1++) {
//如果c为汉字,则返回大写拼音;如果c不是汉字,则返回String.valueOf(c)
pySb.append(Pinyin.toPinyin(data[i].charAt(i1)));
}
cityBean.setPyCity(pySb.toString());//设置城市名拼音
//以下代码设置城市拼音首字母
String sortString = pySb.toString().substring(0, 1);
if (sortString.matches("[A-Z]")) {//如果是A-Z字母开头
cityBean.setTag(sortString);
if (!mSideBarDatas.contains(sortString)) {
mSideBarDatas.add(sortString);
}
} else {
cityBean.setTag("#");
if (!mSideBarDatas.contains("#")) {
mSideBarDatas.add("#");
}
}
mDatas.add(cityBean);
}
sortData();
}
*//**
* 对数据源排序
*//*
private void sortData() {
//对右侧栏进行排序 将 # 丢在最后
Collections.sort(mSideBarDatas, new Comparator<String>() {
@Override
public int compare(String lhs, String rhs) {
if (lhs.equals("#")) {
return 1;
} else if (rhs.equals("#")) {
return -1;
} else {
return lhs.compareTo(rhs);
}
}
});
mSideBar.setIndexText(mSideBarDatas);
//对数据源进行排序
Collections.sort(mDatas, new Comparator<CityBean>() {
@Override
public int compare(CityBean lhs, CityBean rhs) {
if (lhs.getTag().equals("#")) {
return 1;
} else if (rhs.getTag().equals("#")) {
return -1;
} else {
return lhs.getPyCity().compareTo(rhs.getPyCity());
}
}
});
}
*//**
* 根据传入的pos返回tag
*
* @param tag
* @return
*//*
private int getPosByTag(String tag) {
if (TextUtils.isEmpty(tag)) {
return -1;
}
for (int i = 0; i < mDatas.size(); i++) {
if (tag.equals(mDatas.get(i).getTag())) {
return i;
}
}
return -1;
}*/
}