android Expandlistview实例实现

 Expandlistview实例实现


界面XML就不写啦  比较简单。

主类:

public class MainActivity extends Activity {


private List<OneList> mOneList;
private ExpandableListView mExpandableListView;
private StatusExpandAdapter statusAdapter;
private Context context;



@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = this;
mExpandableListView = (ExpandableListView) findViewById(R.id.expandable_listview);
putInitData();
statusAdapter = new StatusExpandAdapter(context, mOneList);


mExpandableListView.setAdapter(statusAdapter);


mExpandableListView.setGroupIndicator(null); // 去掉默认带的箭头


}


public void putInitData(){
   
    String [] onearray1 =new String[]{"咖啡店","湘菜","西北菜","自助餐"};
    String [] onearray2 =new String[]{"韩国料理","小吃","东北菜","其他"};
    String [] onearray3 =new String[]{"东亚南菜","茶餐厅","新疆菜","本地特色菜"};
    String [] onearray4 =new String[]{"川菜","烧烤","清真菜",""};
   
    List<TowList> one_tow_List = new ArrayList<TowList>();
    for (int i = 0; i < onearray4.length; i++) {
    TowList mTowList= new TowList();
    mTowList.setTow_name_one(onearray1[i]);
    mTowList.setTow_name_tow(onearray2[i]);
    mTowList.setTow_name_three(onearray3[i]);
    mTowList.setTow_name_four(onearray4[i]);
    one_tow_List.add(mTowList);
   
}
   
    mOneList = new ArrayList<OneList>();
   
    OneList mmOneList = new OneList();
    mmOneList.setOne_name_one("全部");
    mmOneList.setOne_name_tow("鲁菜");
    mmOneList.setOne_name_three("粤菜");
    mmOneList.setOne_name_four("西餐");
   
    mmOneList.setOne_name_one1("面包西点");
    mmOneList.setOne_name_tow1("快餐简餐");
    mmOneList.setOne_name_three1("日本料理");
    mmOneList.setOne_name_four1("烧烤");
       
        mmOneList.setOne_tow_List(one_tow_List);
        mOneList.add(mmOneList);

}


}


BaseExpandableListAdapter 该ExpandListView的适配器,个人理解就是其中有父类和子类两个 getView ,具体操作和listview差不多。


代码:




public class StatusExpandAdapter extends BaseExpandableListAdapter {
private LayoutInflater inflater = null;
private List<OneList> oneList;
private Context context;


public StatusExpandAdapter(Context context, List<OneList> oneList) {
this.oneList = oneList;
this.context = context;
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}


@Override
public TowList getChild(int arg0, int mTowList) {
return oneList.get(arg0).getOne_tow_List().get(mTowList);
}


@Override
public long getChildId(int arg0, int childId) {


return childId;
}


@Override
public int getChildrenCount(int arg0) {


return oneList.get(arg0).getOne_tow_List() == null ? 0 : oneList
.get(arg0).getOne_tow_List().size();
}


@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final TowItemViewHolder mTowItemViewHolder;
TowList mTowList = getChild(groupPosition, childPosition);


if (convertView == null) {
mTowItemViewHolder = new TowItemViewHolder();
convertView = inflater.inflate(R.layout.tow_item, null);
mTowItemViewHolder.mButton_One1 = (Button) convertView
.findViewById(R.id.tv_001);
mTowItemViewHolder.mButton_Tow2 = (Button) convertView
.findViewById(R.id.tv_002);
mTowItemViewHolder.mButton_Three3 = (Button) convertView
.findViewById(R.id.tv_003);
mTowItemViewHolder.mButton_Four4 = (Button) convertView
.findViewById(R.id.tv_004);
convertView.setTag(mTowItemViewHolder);
} else {
mTowItemViewHolder = (TowItemViewHolder) convertView.getTag();
}
// 设置二级事件
mTowItemViewHolder.mButton_One1.setText(mTowList.getTow_name_one());
mTowItemViewHolder.mButton_Tow2.setText(mTowList.getTow_name_tow());
mTowItemViewHolder.mButton_Three3.setText(mTowList.getTow_name_three());
mTowItemViewHolder.mButton_Four4.setText(mTowList.getTow_name_four());


mTowItemViewHolder.mButton_One1
.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Log.i("xyz", mTowItemViewHolder.mButton_One1.getText()
.toString());
}
});
mTowItemViewHolder.mButton_Tow2
.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View arg0) {
Log.i("xyz", mTowItemViewHolder.mButton_Tow2.getText()
.toString());
}
});
mTowItemViewHolder.mButton_Three3
.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View arg0) {
Log.i("xyz", mTowItemViewHolder.mButton_Three3
.getText().toString());
}
});
mTowItemViewHolder.mButton_Four4
.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View arg0) {
Log.i("xyz", mTowItemViewHolder.mButton_Four4.getText()
.toString());
}
});


return convertView;
}


@Override
public int getGroupCount() {
return oneList.size();
}


@Override
public OneList getGroup(int arg0) {
return oneList.get(arg0);
}


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


@Override
public boolean hasStableIds() {
return false;
}


@Override
public boolean isChildSelectable(int arg0, int arg1) {
return false;
}


@Override
public View getGroupView(int arg0, boolean arg1, View arg2, ViewGroup arg3) {
OneItemViewHolder holder;


OneList oneList = getGroup(arg0);


if (arg2 == null) {
holder = new OneItemViewHolder();
arg2 = inflater.inflate(R.layout.one_item, null);


holder.mButton_One = (TextView) arg2.findViewById(R.id.tv_01);
holder.mButton_Tow = (TextView) arg2.findViewById(R.id.tv_02);
holder.mButton_Three = (TextView) arg2.findViewById(R.id.tv_03);
holder.mButton_Four = (TextView) arg2.findViewById(R.id.tv_04);


holder.mButton_One1 = (TextView) arg2.findViewById(R.id.tv_1);
holder.mButton_Tow1 = (TextView) arg2.findViewById(R.id.tv_2);
holder.mButton_Three1 = (TextView) arg2.findViewById(R.id.tv_3);
holder.mButton_Four1 = (TextView) arg2.findViewById(R.id.tv_4);
holder.img_view = (ImageView) arg2.findViewById(R.id.img_view);
arg2.setTag(holder);
} else {
holder = (OneItemViewHolder) arg2.getTag();
}


holder.mButton_One.setText(oneList.getOne_name_one());
holder.mButton_Tow.setText(oneList.getOne_name_tow());
holder.mButton_Three.setText(oneList.getOne_name_three());
holder.mButton_Four.setText(oneList.getOne_name_four());


holder.mButton_One1.setText(oneList.getOne_name_one1());
holder.mButton_Tow1.setText(oneList.getOne_name_tow1());
holder.mButton_Three1.setText(oneList.getOne_name_three1());
holder.mButton_Four1.setText(oneList.getOne_name_four1());
if (arg1) {
holder.img_view.setBackgroundResource(R.drawable.xiangshang);
holder.img_view.setVisibility(View.GONE);
} else {
// holder.img_view.setVisibility(View.GONE);
holder.img_view.setBackgroundResource(R.drawable.xiangxia);
holder.img_view.setVisibility(View.VISIBLE);
}


holder.mButton_One.setOnClickListener(new MyOnclick());
holder.mButton_Tow.setOnClickListener(new MyOnclick());
holder.mButton_Three.setOnClickListener(new MyOnclick());
holder.mButton_Four.setOnClickListener(new MyOnclick());


holder.mButton_One1.setOnClickListener(new MyOnclick());
holder.mButton_Tow1.setOnClickListener(new MyOnclick());
holder.mButton_Three1.setOnClickListener(new MyOnclick());
holder.mButton_Four1.setOnClickListener(new MyOnclick());


return arg2;
}



class MyOnclick implements OnClickListener {


@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.tv_01:
Log.i("xyz", "全部");
break;


case R.id.tv_02:
Log.i("xyz", "鲁菜");
break;
case R.id.tv_03:
Log.i("xyz", "粤菜");
break;
case R.id.tv_04:
Log.i("xyz", "西餐");


break;
case R.id.tv_1:
Log.i("xyz", "面包");
break;
case R.id.tv_2:
Log.i("xyz", "快餐");
break;
case R.id.tv_3:
Log.i("xyz", "日本料理");
break;
case R.id.tv_4:
Log.i("xyz", "烧烤");
break;
default:
break;
}
}


}


public class OneItemViewHolder {
public TextView mButton_One;
public TextView mButton_Tow;
public TextView mButton_Three;
public TextView mButton_Four;


public TextView mButton_One1;
public TextView mButton_Tow1;
public TextView mButton_Three1;
public TextView mButton_Four1;
public ImageView img_view;


}


public class TowItemViewHolder {
public Button mButton_One1;
public Button mButton_Tow2;
public Button mButton_Three3;
public Button mButton_Four4;


}


}


还有两个bean:


public class OneList {
private String one_name_one;
private String one_name_tow;
private String one_name_three;
private String one_name_four;

private String one_name_one1;
private String one_name_tow1;
private String one_name_three1;
private String one_name_four1;

private List<TowList> one_tow_List;



public List<TowList> getOne_tow_List() {
return one_tow_List;
}
public void setOne_tow_List(List<TowList> one_tow_List) {
this.one_tow_List = one_tow_List;
}
public String getOne_name_one1() {
return one_name_one1;
}
public void setOne_name_one1(String one_name_one1) {
this.one_name_one1 = one_name_one1;
}
public String getOne_name_tow1() {
return one_name_tow1;
}
public void setOne_name_tow1(String one_name_tow1) {
this.one_name_tow1 = one_name_tow1;
}
public String getOne_name_three1() {
return one_name_three1;
}
public void setOne_name_three1(String one_name_three1) {
this.one_name_three1 = one_name_three1;
}
public String getOne_name_four1() {
return one_name_four1;
}
public void setOne_name_four1(String one_name_four1) {
this.one_name_four1 = one_name_four1;
}




public String getOne_name_one() {
return one_name_one;
}
public void setOne_name_one(String one_name_one) {
this.one_name_one = one_name_one;
}
public String getOne_name_tow() {
return one_name_tow;
}
public void setOne_name_tow(String one_name_tow) {
this.one_name_tow = one_name_tow;
}
public String getOne_name_three() {
return one_name_three;
}
public void setOne_name_three(String one_name_three) {
this.one_name_three = one_name_three;
}
public String getOne_name_four() {
return one_name_four;
}
public void setOne_name_four(String one_name_four) {
this.one_name_four = one_name_four;
}



}



public class TowList {
private String tow_name_one;
private String tow_name_tow;
private String tow_name_three;
private String tow_name_four;
public String getTow_name_one() {
return tow_name_one;
}
public void setTow_name_one(String tow_name_one) {
this.tow_name_one = tow_name_one;
}
public String getTow_name_tow() {
return tow_name_tow;
}
public void setTow_name_tow(String tow_name_tow) {
this.tow_name_tow = tow_name_tow;
}
public String getTow_name_three() {
return tow_name_three;
}
public void setTow_name_three(String tow_name_three) {
this.tow_name_three = tow_name_three;
}
public String getTow_name_four() {
return tow_name_four;
}
public void setTow_name_four(String tow_name_four) {
this.tow_name_four = tow_name_four;
}



}

效果图是这样的:




可收缩,点击图片,自己在百度搜了下,结合他们的总结了下。以下源码地址:

http://download.csdn.net/detail/qq_17805097/8923643

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值