ExpandableListActivity

package com.lolaage.app.activity.poi;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.lolaage.R;
import com.lolaage.dataaccess.PoiDB;

import android.app.ExpandableListActivity;
import android.os.Bundle;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnGroupExpandListener;

public class POIForLocActivity extends ExpandableListActivity implements OnGroupExpandListener{

private List<Map<String, String>> listGroup;
//所有组的孩子集合
private List<List<Map<String, String>>> listChild;
private POIForLacAdapter adapter;
private ExpandableListView expandlistview;
public static int FORRESULTPOI = 103;

private void init(){
listGroup = new ArrayList<Map<String, String>>();
listChild = new ArrayList<List<Map<String,String>>>();
listGroup = POIActivity.init();
//组里面的孩子
List<Map<String,String>> child = null;

//循环依次往不同组里面加入孩子
for (int i = 0; i < listGroup.size(); i++) {
child = new ArrayList<Map<String,String>>();
child = PoiDB.selectPoiForNumber(listGroup.get(i).get("poi_name"), this);
listChild.add(child);
}

}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.poi_forloc);

expandlistview = this.getExpandableListView();
init();
adapter = new POIForLacAdapter(this, listGroup, listChild,this);
this.setListAdapter(adapter);
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
//实现ExpandableListActivity只展开一项
@Override
public void onGroupExpand(int groupPosition) {
super.onGroupExpand(groupPosition);
for (int i = 0; i < listGroup.size(); i++) {
if(groupPosition != i){
expandlistview.collapseGroup(i);
}
}
}
}
---------------------------------------------------------------
package com.lolaage.app.activity.poi;

import java.util.List;
import java.util.Map;

import com.lolaage.R;

import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.AbsListView;
import android.widget.BaseExpandableListAdapter;
import android.widget.ImageButton;
import android.widget.TextView;

public class POIForLacAdapter extends BaseExpandableListAdapter {

private Context context;
private List<Map<String, String>> listGroup;
private List<List<Map<String, String>>> listChild;
private POIForLocActivity activity;

public POIForLacAdapter(Context ctx,List<Map<String, String>> group,List<List<Map<String, String>>> child,POIForLocActivity a) {
this.context = ctx;
this.listGroup = group;
this.listChild = child;
this.activity = a;
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return listChild.get(groupPosition).get(childPosition);
}

@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}

@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final Map<String, String> mapData = listChild.get(groupPosition).get(childPosition);
HolderViewChild holder = null;
if(convertView == null){
holder = new HolderViewChild();
convertView = LayoutInflater.from(context).inflate(R.layout.poi_forloc_child, null);

holder.id = (TextView) convertView.findViewById(R.id.tv_poi_forloc_id);
holder.name = (TextView) convertView.findViewById(R.id.tv_poi_forloc_name);
holder.type = (TextView) convertView.findViewById(R.id.tv_poi_forloc_type);
holder.mes = (TextView) convertView.findViewById(R.id.tv_poi_forloc_mes);
holder.picture = (TextView) convertView.findViewById(R.id.tv_poi_forloc_picture);
holder.longitude = (TextView) convertView.findViewById(R.id.tv_poi_forloc_lo);
holder.latitude = (TextView) convertView.findViewById(R.id.tv_poi_forloc_la);
holder.height = (TextView) convertView.findViewById(R.id.tv_poi_forloc_height);
holder.isup = (TextView) convertView.findViewById(R.id.tv_poi_forloc_isup);
holder.rb = (ImageButton) convertView.findViewById(R.id.rb_poi_forloc);

convertView.setTag(holder);
}else{
holder = (HolderViewChild) convertView.getTag();
}
holder.id.setText(mapData.get("id"));
holder.name.setText(mapData.get("poi_name"));
holder.type.setText(mapData.get("poi_type"));
holder.mes.setText(mapData.get("poi_mes"));
holder.picture.setText(mapData.get("poi_picture"));
holder.longitude.setText(mapData.get("poi_longitude"));
holder.latitude.setText(mapData.get("poi_latitude"));
holder.height.setText(mapData.get("poi_height"));
holder.isup.setText(mapData.get("poi_isup"));
holder.rb.setBackgroundResource(R.drawable.next_page);

holder.rb.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
Intent intent = activity.getIntent();
Bundle bundle = new Bundle();
bundle.putStringArray("poiMesArr", sendData(mapData));
intent.putExtras(bundle);
activity.setResult(activity.FORRESULTPOI, intent);
activity.finish();
// Toast.makeText(context, mapData.get("poi_name"), Toast.LENGTH_SHORT).show();
}
});
return convertView;
}

@Override
public int getChildrenCount(int groupPosition) {
return listChild.get(groupPosition).size();
}

@Override
public Object getGroup(int groupPosition) {
return listGroup.get(groupPosition);
}

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

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

@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
Map<String, String> map = listGroup.get(groupPosition);
HolderViewGroup holder = null;
if(convertView == null){
holder = new HolderViewGroup();
convertView = LayoutInflater.from(context).inflate(R.layout.poi_forloc_group, null);

holder.name = (TextView) convertView.findViewById(R.id.tv_poi_forloc_group_name);
holder.number = (TextView) convertView.findViewById(R.id.tv_poi_forloc_group_number);
convertView.setTag(holder);
}else{
holder = (HolderViewGroup) convertView.getTag();
}
holder.name.setText(map.get("poi_name"));
holder.number.setText(map.get("poi_number"));
// return getGenericView(listGroup.get(groupPosition).toString());
return convertView;
}

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

@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
/**
* 获取组视图
* @param str
* @return
*/
public View getGenericView(String str){
AbsListView.LayoutParams alp = new AbsListView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, 64);
alp.height = 36;
TextView view = new TextView(context);
view.setLayoutParams(alp);

view.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
view.setPadding(36, 0, 0, 0);
view.setTextColor(Color.WHITE);
view.setText(str);
return view;
}

/**
* 孩子视图
* @author Administrator
*
*/
private class HolderViewChild{
private TextView id;
private TextView name;
private TextView type;
private TextView mes;
private TextView picture;
private TextView longitude;
private TextView latitude;
private TextView height;
private TextView isup;
private ImageButton rb;
}
/**
* 组视图
* @author Administrator
*
*/
private class HolderViewGroup{
private TextView name;
private TextView number;
}
/**
* 封装发送的数据
* @param list
* @param p
* @return
*/
private String[] sendData(Map<String, String> map){
String[] str = new String[]{map.get("id").toString(),
map.get("poi_name").toString(),
map.get("poi_type").toString(),
map.get("poi_mes") != null ? map.get("poi_mes").toString() : "",
map.get("poi_picture").toString() != null ? map.get("poi_picture").toString() : "",
map.get("poi_longitude").toString() != null ? map.get("poi_longitude").toString() : "",
map.get("poi_latitude").toString() != null ? map.get("poi_latitude").toString() : "",
map.get("poi_height").toString() != null ? map.get("poi_height").toString() : "",
map.get("poi_isup").toString()};
return str;
}
}
====================poi_forloc.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="@drawable/bg">
<LinearLayout
android:id="@+id/ll_poi_forloc"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:gravity="center"
android:background="@drawable/desk_top_status_bar">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="兴趣点列表">
</TextView>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1">
<ExpandableListView
android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:drawSelectorOnTop="false">
</ExpandableListView>
<TextView
android:id="@id/android:empty"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="no data">
</TextView>
</LinearLayout>
</LinearLayout>
==============================poi_forloc_child.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/tv_poi_forloc_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:visibility="gone">
</TextView>
<TextView
android:id="@+id/tv_poi_forloc_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:paddingLeft="50dp">
</TextView>
<TextView
android:id="@+id/tv_poi_forloc_type"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:visibility="gone">
</TextView>
<TextView
android:id="@+id/tv_poi_forloc_mes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:visibility="gone">
</TextView>
<TextView
android:id="@+id/tv_poi_forloc_picture"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:visibility="gone">
</TextView>
<TextView
android:id="@+id/tv_poi_forloc_lo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:visibility="gone">
</TextView>
<TextView
android:id="@+id/tv_poi_forloc_la"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:visibility="gone">
</TextView>
<TextView
android:id="@+id/tv_poi_forloc_height"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:visibility="gone">
</TextView>
<TextView
android:id="@+id/tv_poi_forloc_isup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:visibility="gone">
</TextView>
<ImageButton
android:id="@+id/rb_poi_forloc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:layout_centerVertical="true"
android:layout_gravity="center"
android:layout_alignParentRight="true"
android:layout_marginRight="15dp"
android:text="选择">
</ImageButton>
</RelativeLayout>
</LinearLayout>
==========================poi_forloc_group.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_poi_forloc_group_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:paddingLeft="50dp"
android:paddingBottom="10dp"
android:textSize="24sp"
android:text="No Data">
</TextView>
<TextView
android:id="@+id/tv_poi_forloc_group_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:paddingLeft="10dp"
android:paddingBottom="10dp"
android:textSize="24sp"
android:text="No Data">
</TextView>
</LinearLayout>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值