`
不夜的星辰
  • 浏览: 88377 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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>
分享到:
评论

相关推荐

    ExpandableListActivity例子,自动展开

    在Android开发中,`ExpandableListActivity`是一个用于展示可扩展列表的特殊活动。这个类是基于`ListView`的,但提供了更复杂的功能,允许用户显示分组数据,每个分组下还可以有多个子项。在给定的...

    ExpandableListActivity和SimpleExpandableListAdapter的基本使用详解

    ### ExpandableListActivity与SimpleExpandableListAdapter的基本使用详解 在Android开发中,当我们的应用需要显示具有层次结构的数据时,例如家庭成员、公司部门结构等,普通的`ListActivity`就显得力不从心了。这...

    PreferenceActivity和ExpandableListActivity的使用

    PreferenceActivity和ExpandableListActivity的使用,详细了解请移步:http://blog.csdn.net/zxc514257857/article/details/77773001

    android 的类似于QQ分组的二级列表

    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; ...

    android安卓笔记

    - **ExpandableListActivity-扩展列表页**:`ExpandableListActivity`是一种更为复杂的列表页面,它可以展示具有层次结构的数据。每个顶层项都可以展开显示其子项。 #### TabActivity—标签页 - **TabActivity-标签...

    Android学习笔记(二五): 多信息显示-ExpandableListView的使用.doc

    在提供的代码示例中,我们看到`Chapter9Tutorial4`扩展了`ExpandableListActivity`,这是一个专为ExpandableListView设计的Activity基类。在`onCreate`方法中,我们需要设置两个关键的数据结构:`groupData`和`...

    Android支持展开和收缩功能的列表控件[汇编].pdf

    首先,`ActivityMain`继承自`ExpandableListActivity`,这是一个专门为`ExpandableListView`定制的Activity基类,它简化了扩展列表视图的集成。在`onCreate`方法中,我们设置Activity的标题,并创建了一个`...

    Android应用源码之expandableList1_expandableList.zip

    在`ExpandableListActivity.java`或类似的文件中,你需要创建一个自定义的Adapter类,继承自`BaseExpandableListAdapter`,并实现其方法如`getGroupCount()`、`getChildrenCount(int groupPosition)`、`getGroup(int...

    android的ExpandableListView组件.doc

    `ExpandableListView`通常与`ExpandableListActivity`一起使用,就像`ListActivity`与`ListView`的关系一样。 首先,我们需要创建一个包含`ExpandableListView`的布局。在`main.xml`中,你可以看到以下代码: ```...

    android开发笔记

    - **ExpandableListActivity**: 显示可扩展列表的Activity。 - **SeekBar**: 调整数值的滑动条。 - **RatingBar**: 显示评分或等级的组件。 - **Handler**: 处理消息和运行线程的任务调度器。 - **SQLite**: 内置的...

    Mars Android视频教程的笔记

    5. **ExpandableListActivity.doc** - ExpandableListView是一种可扩展的列表视图,能展示层级结构的数据。这部分讲述了如何创建和管理子项,以及监听和响应用户的展开和折叠操作。 6. **ContentProvider.doc** - ...

    Android-ExpandableListView制作时间轴-TimeLine

    在Android中,我们可以使用`ExpandableListActivity`或者普通的`Activity`配合`ExpandableListView`进行布局。数据通常由`ExpandableListAdapter`管理,这个适配器需要实现`BaseExpandableListAdapter`接口。 在...

    ExpandableListView实现手风琴效果

    (2)第二种方法则是创建一个Activity继承自ExpandableListActivity,而后通过getExpandableListView()方法可获得一个ExpandableListView对象。 第二种方法仅适用于一个页面中只有一个ExpandableListView的情况。...

    android学习实例

    Android控件下拉框,单选按钮,复选框,自动补全,日期控件(支持显示格式:年月,年月日,月日),LauncherActivity的使用,ExpandableListActivity实现二级下拉列表,并且在列表项右边加自定义的图片,实现只展开一个菜单的功能...

    Android 个人理财工具三:添加账单页面 上

    账目被分为层次结构,即父节点(如“食品”)和子节点(如“餐饮”),这可以通过ExpandableListActivity实现。 在账目选择过程中,用户可以选择已存在的账目,或者如果需要新账目,可以进入账目管理界面进行添加或...

    Android仿QQ好友列表实现列表收缩与展开

    由于`ExpandableListView`需要特定的上下文,因此通常你的Activity需要继承自`ExpandableListActivity`: ```java import android.app.ExpandableListActivity; import android.os.Bundle; public class ...

    分享Android中ExpandableListView控件使用教程

    这里我们创建了一个名为 `ContactsActivity` 的 `ExpandableListActivity` 子类。在 `onCreate` 方法中,我们设置了无标题、加载布局、设置背景,并初始化数据。 ```java public class ContactsActivity extends ...

    android列表控件实现展开、收缩功能

    在我们的示例代码中,我们创建了一个 ActivityMain 类,该类继承自 ExpandableListActivity,并实现了 onCreate()、onCreateContextMenu() 和 onContextItemSelected() 等方法。这些方法负责初始化列表控件、创建上...

    Android ExpandableListView展开列表控件使用实例

    接下来是关键的Java代码,通常继承自`ExpandableListActivity`或者自定义的`BaseExpandableListAdapter`。这里,`ExpandActivity`类负责设置`ExpandableListView`的数据源和适配器。`onCreate`方法是初始化的关键点...

Global site tag (gtag.js) - Google Analytics