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>
分享到:
相关推荐
在Android开发中,`ExpandableListActivity`是一个用于展示可扩展列表的特殊活动。这个类是基于`ListView`的,但提供了更复杂的功能,允许用户显示分组数据,每个分组下还可以有多个子项。在给定的...
### ExpandableListActivity与SimpleExpandableListAdapter的基本使用详解 在Android开发中,当我们的应用需要显示具有层次结构的数据时,例如家庭成员、公司部门结构等,普通的`ListActivity`就显得力不从心了。这...
PreferenceActivity和ExpandableListActivity的使用,详细了解请移步:http://blog.csdn.net/zxc514257857/article/details/77773001
import android.app.ExpandableListActivity; import android.os.Bundle; import android.provider.Contacts.People; import android.util.Log; import android.view.ContextMenu; import android.view.Gravity; ...
- **ExpandableListActivity-扩展列表页**:`ExpandableListActivity`是一种更为复杂的列表页面,它可以展示具有层次结构的数据。每个顶层项都可以展开显示其子项。 #### TabActivity—标签页 - **TabActivity-标签...
在提供的代码示例中,我们看到`Chapter9Tutorial4`扩展了`ExpandableListActivity`,这是一个专为ExpandableListView设计的Activity基类。在`onCreate`方法中,我们需要设置两个关键的数据结构:`groupData`和`...
首先,`ActivityMain`继承自`ExpandableListActivity`,这是一个专门为`ExpandableListView`定制的Activity基类,它简化了扩展列表视图的集成。在`onCreate`方法中,我们设置Activity的标题,并创建了一个`...
在`ExpandableListActivity.java`或类似的文件中,你需要创建一个自定义的Adapter类,继承自`BaseExpandableListAdapter`,并实现其方法如`getGroupCount()`、`getChildrenCount(int groupPosition)`、`getGroup(int...
`ExpandableListView`通常与`ExpandableListActivity`一起使用,就像`ListActivity`与`ListView`的关系一样。 首先,我们需要创建一个包含`ExpandableListView`的布局。在`main.xml`中,你可以看到以下代码: ```...
- **ExpandableListActivity**: 显示可扩展列表的Activity。 - **SeekBar**: 调整数值的滑动条。 - **RatingBar**: 显示评分或等级的组件。 - **Handler**: 处理消息和运行线程的任务调度器。 - **SQLite**: 内置的...
5. **ExpandableListActivity.doc** - ExpandableListView是一种可扩展的列表视图,能展示层级结构的数据。这部分讲述了如何创建和管理子项,以及监听和响应用户的展开和折叠操作。 6. **ContentProvider.doc** - ...
在Android中,我们可以使用`ExpandableListActivity`或者普通的`Activity`配合`ExpandableListView`进行布局。数据通常由`ExpandableListAdapter`管理,这个适配器需要实现`BaseExpandableListAdapter`接口。 在...
(2)第二种方法则是创建一个Activity继承自ExpandableListActivity,而后通过getExpandableListView()方法可获得一个ExpandableListView对象。 第二种方法仅适用于一个页面中只有一个ExpandableListView的情况。...
Android控件下拉框,单选按钮,复选框,自动补全,日期控件(支持显示格式:年月,年月日,月日),LauncherActivity的使用,ExpandableListActivity实现二级下拉列表,并且在列表项右边加自定义的图片,实现只展开一个菜单的功能...
账目被分为层次结构,即父节点(如“食品”)和子节点(如“餐饮”),这可以通过ExpandableListActivity实现。 在账目选择过程中,用户可以选择已存在的账目,或者如果需要新账目,可以进入账目管理界面进行添加或...
由于`ExpandableListView`需要特定的上下文,因此通常你的Activity需要继承自`ExpandableListActivity`: ```java import android.app.ExpandableListActivity; import android.os.Bundle; public class ...
这里我们创建了一个名为 `ContactsActivity` 的 `ExpandableListActivity` 子类。在 `onCreate` 方法中,我们设置了无标题、加载布局、设置背景,并初始化数据。 ```java public class ContactsActivity extends ...
在我们的示例代码中,我们创建了一个 ActivityMain 类,该类继承自 ExpandableListActivity,并实现了 onCreate()、onCreateContextMenu() 和 onContextItemSelected() 等方法。这些方法负责初始化列表控件、创建上...
接下来是关键的Java代码,通常继承自`ExpandableListActivity`或者自定义的`BaseExpandableListAdapter`。这里,`ExpandActivity`类负责设置`ExpandableListView`的数据源和适配器。`onCreate`方法是初始化的关键点...