zoukankan      html  css  js  c++  java
  • listActivity和ExpandableListActivity的简单用法 转

      

    http://www.cnblogs.com/limingblogs/archive/2011/10/09/2204866.html

    今天自己简单的总结了listActivity和ExpandableListActivity二者的简单用法。

      首先,先说一下listActivity的用法:

      ListActivity是一个绑定到一个数据源,并且用来显示这一串数据的Activity。ListActivity拥有一个listview对象来实现数据源的绑定与显示,通常会是一个array或者一个拥有查询结果的cursor.ListActivity本身有一个默认的layout,其中包含一个全屏的list。如果用默认的layout,你必须要在onCreate()中注释掉setContentView()那一句。但是如果你如果你想要定制自己的layout你可以创建一个你自己的layout文件,并且在onCreate()中调用setContentView()来指定这个layout.,需要注意的是你自己的layout中必须用到系统给定的id为"@android:id/list"的ListView。

      下面是一个简单的例子,运行结果如下:

     

    activityde 代码如下:

    package lm.muilThreadDownload;
      
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
      
    import lm.muilThreadEntity.DownloadInfo;
    import lm.muilThreadService.Downloader;
      
    import android.app.ListActivity;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.util.Log;
    import android.view.View;
    import android.widget.LinearLayout;
    import android.widget.ProgressBar;
    import android.widget.SimpleAdapter;
    import android.widget.TextView;
    import android.widget.Toast;
      
    public class MuilThreadDownloadActivity extends ListActivity {
    @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            showListView();//显示listView
        }
      
        private void showListView() {
            List<Map<String, String>> data = new ArrayList<Map<String, String>>();
            Map<String, String> map = new HashMap<String, String>();
            map.put("name", "liming.mp3");
            data.add(map);
            map = new HashMap<String, String>();
            map.put("name", "liming2.mp3");
            data.add(map);
            map = new HashMap<String, String>();
            map.put("name", "liming3.mp3");
            data.add(map);
            SimpleAdapter adapter = new SimpleAdapter(this, data,
                    R.layout.list_item, new String[] { "name" },
                    new int[] { R.id.tv_resouce_name });
            setListAdapter(adapter);
        }
    }

     

    xml文件的代码如下:

     

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/mainlayout"
        >
    <ListView
        android:id="@android:id/list"  
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        />
    </LinearLayout>

     

    我们看到,上面的ListView的id用的就是系统自带的"@android:id/list"。

    其次,我们也可以不用布局文件,自己定义一个ListView的对象,通过id来获得加载的视图文件。具体代码如下:

    package lm.mediaPlayer;
      
    import android.app.ListActivity;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.net.Uri;
    import android.os.Bundle;
    import android.os.Environment;
    import android.util.Log;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
      
      
    public class MyMediaPlayerActivity extends ListActivity {
        private ListView listView;
        private ScannerSDCardReceiver receiver;
        private boolean b = false;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            listView = new ListView(this);
            listView.setId(android.R.id.list);//获得listView的id
            setContentView(listView);//加载listView
            showListView();
        }
          
        private void showListView() {//显示listView
            String[] from = {"全部音乐","最近播放音乐"};
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,from);
            listView.setAdapter(adapter);
        }
    }

    运行结果如下:

     

    最后,我们看一下ExpandableListActivity的用法,开始运行效果图如下:

    当我们展开向右的箭头时,效果如下:

    我们看到“国家”和“语言”分别是组名,每个组名下面还有很多child(中国,美国),(汉语,英语),其实ExpandableListActivity就是实现这样的功能,能更方便的现实一些列表信息。具体代码如下:

    package lm.expendablelistAcitivity;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
      
    import android.app.ExpandableListActivity;
    import android.os.Bundle;
    import android.widget.SimpleExpandableListAdapter;
    //首先继承ExpandableListActivity
    public class MyExpendableListActivityActivity extends ExpandableListActivity{
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
              
            List<Map<String,String>> list = new ArrayList<Map<String,String>>();//组名
            Map<String,String> map1 = new HashMap<String,String>();
            map1.put("group", "国家");
            Map<String,String> map2 = new HashMap<String,String>();
            map2.put("group", "语言");
            list.add(map1);
            list.add(map2);
              
            List<Map<String,String>> listChild1 = new ArrayList<Map<String,String>>();//child
            Map<String,String> map3 = new HashMap<String,String>();
            map3.put("country", "中国");
            listChild1.add(map3);
            Map<String,String> map4 = new HashMap<String,String>();
            map4.put("country", "美国");
            listChild1.add(map4);
              
            List<Map<String,String>> listChild2 = new ArrayList<Map<String,String>>();//child
            Map<String,String> map5 = new HashMap<String,String>();
            map5.put("country", "汉语");
            listChild2.add(map5);
            Map<String,String> map6 = new HashMap<String,String>();
            map6.put("country", "英语");
            listChild2.add(map6);
              
            List<List<Map<String,String>>> childs = new  ArrayList<List<Map<String,String>>>();//将两个child加入的集合中
            childs.add(listChild1);
            childs.add(listChild2);
            SimpleExpandableListAdapter adapter = new SimpleExpandableListAdapter(this, list, R.layout.group, new String[]{"group"},
                    new int[]{R.id.tv_group}, childs, R.layout.child, new String[]{"country"}, new int[]{R.id.tv_child});
            setListAdapter(adapter);//适配器
        }
    }
    其中group的xml文件代码如下:
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
    <TextView
        android:id="@+id/tv_group"  
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:paddingLeft="60px"
        android:paddingTop="10px"
        android:paddingBottom="10px"
        android:textSize="25sp"
        android:text="无数据"
        />
    </LinearLayout>

    child的xml文件代码如下:

     

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
    <TextView
        android:id="@+id/tv_child"  
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:paddingLeft="50px"
        android:paddingTop="5px"
        android:paddingBottom="5px"
        android:textSize="20sp"
        android:text="无数据"
        />
    </LinearLayout>

     

    好了,以上就是我总结的内容,希望大家多多指教!

     

  • 相关阅读:
    Java Spring Boot VS .NetCore (十) Java Interceptor vs .NetCore Interceptor
    Java Spring Boot VS .NetCore (九) Spring Security vs .NetCore Security
    IdentityServer4 And AspNetCore.Identity Get AccessToken 问题
    Java Spring Boot VS .NetCore (八) Java 注解 vs .NetCore Attribute
    Java Spring Boot VS .NetCore (七) 配置文件
    Java Spring Boot VS .NetCore (六) UI thymeleaf vs cshtml
    Java Spring Boot VS .NetCore (五)MyBatis vs EFCore
    Java Spring Boot VS .NetCore (四)数据库操作 Spring Data JPA vs EFCore
    Java Spring Boot VS .NetCore (三)Ioc容器处理
    Java Spring Boot VS .NetCore (二)实现一个过滤器Filter
  • 原文地址:https://www.cnblogs.com/carbs/p/2581297.html
Copyright © 2011-2022 走看看