欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ListView使用方法

程序员文章站 2022-04-23 07:52:00
...

ListView使用方法总结


- 直接使用ListView组件创建列表

- 通过Activity继承ListActivity创建

- 定制ListView界面


直接使用ListView组件创建列表

通过数组资源文件指定列表项

  1. 先在XML布局文件中添加ListView标志,设置好相关属性;在values下创建数组资源文件arrays.xml,添加字符串数组intype
        <resources>
            <string-array name="intype">
                <item>关机</item>
                <item>飞行模式</item>
                <item>重新启动</item>
                <item>数据网络模式</item>
            </string-array>
        </resources>

在ListView布局中使用”android:entries aaa@qq.com/intype”指定列表项

<ListView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/list1"
    android:entries="@array/intype">
</ListView>

注意:资源数组只能指定纯文字的列表项
效果:
ListView使用方法


2 . 第二种是使用适配器指定列表项,去掉布局中属性”android:entries aaa@qq.com/intype”,然后在Activity 文件中添加ArrayAdapter (通常用于纯文本列表项) 调用ArrayAdapter.createFromResource()创建适配器

 ListView lst=findViewById(R.id.list1);
        ArrayAdapter <CharSequence> ad = ArrayAdapter.createFromResource(this,
                R.array.intype,android.R.layout.simple_dropdown_item_1line);
        lst.setAdapter(ad);

其中 android.R.layout.simple_dropdown_item_1line用于指定ListView外观形式
常用的有以下几个:
- simple_list_item_1:普通文本
- simple_list_item_2:普通文本,字体较大
- simple_list_item_checked:带有勾选框的列表项
- simple_list_item_multiple_choice:带有多选框文本
- simple_list_item_single_choice:带有单选按钮的文本


通过Activity继承ListActivity创建

将Activity继承ListActivity,删除默认的布局文件,在onCreate()方法中创建适配器,调用setListAdapter()添加

public class MainActivity extends ListActivity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String[] ctype = new String[]{"新增支出", "新增收入", "我的支出", "我的收入", "数据管理", "系统设置"};
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice, ctype);

        setListAdapter(adapter);
        getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
    }

    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        String result=l.getItemAtPosition(position).toString();
        Toast.makeText(MainActivity.this,result,Toast.LENGTH_SHORT).show();

    }
}

效果:
ListView使用方法


定制ListView界面

1、在默认的布局文件中添加ListView标志

    <ListView
        android:id="@+id/tongxunlu"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </ListView>

2、src/layout中新建XML文件gvitem.xml,用于设置每一个列表的布局样式

    <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/tongxuntu"
                android:scaleType="centrInside"
                android:layout_margin="10dp"/>

            <TextView
                android:id="@+id/tonngxuntext"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="5dp"
                android:layout_gravity="center_vertical"
                android:textSize="13sp"
                android:textColor="#3b3b3b"/>

    </LinearLayout>

3、在Activity文件中,实例化一个simpleAdapter适配器, List集合类用于添加图标、文本

 public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        list=InitData();
        simpleAdapter=new SimpleAdapter(getActivity(),
                list,
                R.layout.frag2_gvitem,
                new String[]{"image","title"},
                new int[]{R.id.tongxuntu,R.id.tonngxuntext});
        listView.setAdapter(simpleAdapter);

    }

    private List<Map<String,Object>> InitData() {

        String [] name=new String[]{"新的朋友","群聊","标签","公众号"};
        //图片资源
        int [] image=new int[]{R.mipmap.friend,R.mipmap.group,R.mipmap.lable,R.mipmap.pub};

        List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();
        for (int i=0;i<image.length;i++)
        {
            Map<String,Object> map=new HashMap<String, Object>();
            map.put("image",image[i]);
            map.put("title",name[i]);
            list.add(map);
        }
        return list;
    }

效果:
ListView使用方法

相关标签: 移动开发