public class MainActivity extends Activity implements OnItemClickListener{
String[] letter = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K",
"L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X",
"Y", "Z" };
String[] city = { "C", "B", "H", "G", "W", "C", "S", "S", "C", "W", "H",
"Z", "C", "D", "N", "L", "Q", "S", "S", "L", "N", "H", "X", "H",
"S", "Z", "G", "N", "J", "T", "S", "X", "A" };
String[] cityName = { "长沙", "北京", "杭州", "广州", "武汉", "重庆", "上海", "深圳", "长春",
"乌鲁木齐", "哈尔滨", "郑州", "成都", "大连", "南昌", "兰州", "齐齐哈尔", "汕头", "苏州",
"拉萨", "南京", "呼和浩特", "厦门", "合肥", "沈阳", "张家界", "贵州", "宁夏", "济南",
"天津", "石家庄", "西安", "澳门" };
private List<String> ls=new ArrayList<String>();
private ListView left;
private ListView right;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
left = (ListView) findViewById(R.id.left_lv);
right = (ListView) findViewById(R.id.right_lv);
//lef适配器所用的数据ls集合,将字母与城市添加到集合中
for (int i = 0; i < letter.length; i++) {
boolean b=false;
for (int j = 0; j < city.length; j++) {
if (letter[i].equals(city[j])) {
if (!b) {//为了避免添加同样的字母
b=true;
ls.add(letter[i]);//添加字母
}
ls.add(cityName[j]);//添加城市
}
}
}
left.setAdapter(new Leftadp());
right.setAdapter(new Rightadp());
//条目的监听事件
left.setOnItemClickListener(this);
right.setOnItemClickListener(this);
}
//左边的适配器
class Leftadp extends BaseAdapter{
@Override
public int getItemViewType(int position) {
for (int i = 0; i < letter.length; i++) {
//用字母进行比较
if (letter[i].equals(ls.get(position))) {
return 0; //字母类型
}
}
return 1;//城市类型
}
@Override
public int getViewTypeCount() {
// TODO Auto-generated method stub
return 2;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return ls.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
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) {
int type=getItemViewType(position);
if (convertView==null){//找布局
switch (type) {
case 0:
convertView = View.inflate(MainActivity.this, R.layout.left_item1, null);
break;
case 1:
convertView = View.inflate(MainActivity.this, R.layout.left_item2, null);
break;
}
}
//找控件
TextView left1=(TextView) convertView.findViewById(R.id.left1_tv);
TextView left2=(TextView) convertView.findViewById(R.id.left2_tv);
//为控件赋值
switch (type) {
case 0:
left1.setText(ls.get(position));
break;
case 1:
left2.setText(ls.get(position));
break;
}
return convertView;
}
}
//右边的适配器
class Rightadp extends BaseAdapter{
@Override
public int getCount() {
// TODO Auto-generated method stub
return letter.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
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) {
convertView=View.inflate(MainActivity.this, R.layout.right_item, null);
TextView tv=(TextView) convertView.findViewById(R.id.right_tv);
tv.setText(letter[position]);
return convertView;
}
}
@Override
public void onItemClick(AdapterView《?》 parent, View view, int position, long id) {
switch (parent.getId()) {
case R.id.left_lv:
boolean falg=false;
for (int i = 0; i < letter.length; i++) {
if (letter[i].equals(ls.get(position))) {//将字母数组与集合一一比较,如果是字母就跳出循环
falg=true;//不在走下面的if语句
break;
}
}
if (!falg) {
Toast.makeText(MainActivity.this, ls.get(position), 0).show();
}
break;
case R.id.right_lv:
for (int i = 0; i < ls.size(); i++) {
if (letter[position].equals(ls.get(i))) {
//根据索引将条目跳到指定索引
left.setSelection(i);
}
}
break;
}
}
}