listActivity和ExpandableListActivity的用法


今天自己简单的总结了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 MuilThreadDownloadActivityextends 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 MyMediaPlayerActivityextends 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 MyExpendableListActivityActivityextends 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>

 

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ListView是Android中最常用的UI组件之一,用于展示具有固定结构的大量数据。它继承自AdapterView,可以通过Adapter来动态地显示数据。 ListView的特点是:每一行数据都是相同的布局,并且每个Item的高度是相同的。因此,我们可以利用ListView来展示一些比较简单的数据列表。 在使用ListView时,我们需要实现一个Adapter来提供数据,并且可以对ListView的Item进行自定义布局。以下是一个简单的使用ListView的例子: ```java public class MainActivity extends AppCompatActivity { private ListView mListView; private List<String> mDataList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mListView = findViewById(R.id.list_view); // 初始化数据 mDataList = new ArrayList<>(); for (int i = 0; i < 50; i++) { mDataList.add("Item " + i); } // 创建适配器 ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, mDataList); // 设置适配器 mListView.setAdapter(adapter); } } ``` 在这个例子中,我们使用了Android自带的ArrayAdapter作为ListView的适配器,并且使用了系统提供的简单列表项布局simple_list_item_1,将数据逐一展示在ListView中。 除了普通的ListView,Android还提供了一个ListActivity类,它是一个已经封装好的Activity,专门用来展示ListView。我们只需要继承ListActivity,实现一个适配器即可。以下是一个使用ListActivity的例子: ```java public class MainActivity extends ListActivity { private List<String> mDataList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 初始化数据 mDataList = new ArrayList<>(); for (int i = 0; i < 50; i++) { mDataList.add("Item " + i); } // 创建适配器 ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, mDataList); // 设置适配器 setListAdapter(adapter); } } ``` 在这个例子中,我们继承了ListActivity,并且在onCreate()方法中直接使用setListAdapter()方法设置适配器,省去了findViewById()和ListView的初始化过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值