1.编写简单的布局
<ListView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/lv_zuoye_listview" ></ListView> 2.编写java代码,通过id找到该控件
lv_zuoye_listview = (ListView) findViewById(R.id.lv_zuoye_listview);
3.编写组的集合和子的集合
//所有组+子的集合
private List<String> list; //所有组的集合 private List<String> groupKey=new ArrayList<>(); //a子集合 private List<String> alist=new ArrayList<>(); //b子集合 private List<String> blist=new ArrayList<>(); //c子集合 private List<String> clist=new ArrayList<>();public void initData(){ list = new ArrayList<String>(); groupKey.add("A组"); groupKey.add("B组"); groupKey.add("C组"); for (int i = 0; i <3 ; i++) { alist.add("a"+i); } list.add("A组"); list.addAll(alist); for (int i = 0; i <3 ; i++) { blist.add("b"+i); } list.add("B组"); list.addAll(blist); for (int i = 0; i <3 ; i++) { clist.add("c"+i); } list.add("C组"); list.addAll(clist); }
4.编写自己的适配器class MyAdapter extends BaseAdapter{ @Override public int getCount() { return list.size(); } //循环获取总循环的每一个值 @Override public Object getItem(int position) { return list.get(position); } //每一行的id @Override public long getItemId(int position) { return position; } //判断组集合中是否包含该行,如果包含则设置改行不可点击 @Override public boolean isEnabled(int position) { if(groupKey.contains(getItem(position))){ return false; } return super.isEnabled(position); } @Override public View getView(int position, View convertView, ViewGroup parent) { View view=convertView; if(groupKey.contains(getItem(position))){ //设置组的布局样式,可自己编写,也可以直接引用android自带的,并强转为View类型 view=LayoutInflater.from(getApplicationContext()).inflate(R.layout.addexam_list_item, null); }else{ //设置子的布局样式,可自己编写,也可以直接引用android自带的,并强转为View类型 view=LayoutInflater.from(getApplicationContext()).inflate(R.layout.addexam_list_item_tag, null); } //通过id获取该布局中的TextView控件,并设置TextView的文本内容 TextView text=(TextView) view.findViewById(R.id.addexam_list_item_text); text.setText((CharSequence)getItem(position)); return view; }