android 二级菜单的实现

来源:互联网 发布:360安全认证软件 编辑:程序博客网 时间:2024/04/30 19:02

大众点评有一个功能,如图:


点击左边右边出来对应的内容,其实这个想到了方法很简单,

首先布局就是二个listview就可以搞定,无非是里面的数据是怎么填充的,

比如:第一个listview中定义一个List<String>集合比如:这个集合中添加了江西省,浙江省,福建省

那么江西省下面就有很多市,比如:九江市,南昌市,景德镇市,上饶市等等,那么如果在集合中再存放一个集合,这个集合就存放与省相关的市,

定义;private List<List<String>> Data2;


代码如下:

public class MainActivity extends Activity {
private ListView lv1,lv2;

private List<String> Data1;
private List<List<String>> Data2;

private Context ctx;
private MyAdapter myAdapter;
private MyDataAdapter myDataAdapter ;
public  int position;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ctx = this;
lv1 = (ListView) findViewById(R.id.lv1);
lv2 = (ListView) findViewById(R.id.lv2);


initData();
myAdapter = new MyAdapter(); 
lv1.setAdapter(myAdapter);

myDataAdapter = new MyDataAdapter();
lv2.setAdapter(myDataAdapter);

lv1.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
MainActivity.this.position = arg2;
myDataAdapter.setPosition(position);
myDataAdapter.notifyDataSetChanged();
}
});
}

private void initData() {
Data1 = new ArrayList<String>();
Data1.add("江西省");
Data1.add("浙江省");
Data1.add("福建省");


List<String> list= new ArrayList<String>();
list.add("南昌");
list.add("九江");
list.add("上饶");
list.add("赣州");
list.add("景德镇");
list.add("抚州");

List<String> list1= new ArrayList<String>();
list1.add("温州市");
list1.add("嘉兴市");
list1.add("湖州市");
list1.add("绍兴市");
list1.add("金华市");
list1.add("衢州市");

List<String> list2= new ArrayList<String>();
list2.add("莆田市");
list2.add("泉州市");
list2.add("厦门市");
list2.add("漳州市");
list2.add("龙岩市");
list2.add("三明市");
Data2 = new ArrayList<List<String>>();

Data2.add(list);
Data2.add(list1);
Data2.add(list2);
}


class MyAdapter extends BaseAdapter{

@Override
public int getCount() {
return Data1.size();
}


@Override
public Object getItem(int arg0) {
return Data1.get(arg0);
}


@Override
public long getItemId(int arg0) {
return arg0;
}


@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
TextView tv = new TextView(ctx);
tv.setText(Data1.get(arg0));
return tv;
}
}


/*************************************************/
class MyDataAdapter extends BaseAdapter{
public int position;
 
public void setPosition(int position) {
this.position = position;
}


@Override
public int getCount() {
return Data2.get(position).size();
}


@Override
public Object getItem(int arg0) {
return null;
}


@Override
public long getItemId(int arg0) {
return arg0;
}


@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
TextView tv = new TextView(ctx);
List<String> list = Data2.get(position);
tv.setText(list.get(arg0));
return tv;
}
}
}


效果图:



0 0
原创粉丝点击