java listview用法_Android ListView adapter详细使用教程

本文是一篇关于Android中ListView组件及其适配器ArrayAdapter和BaseAdapter的详细使用教程。通过实例展示了如何创建一个简单的联系人列表,以及如何自定义ListView的行视图,包括设置头像和名称。同时讲解了自定义Adapter的实现方法和事件监听。
摘要由CSDN通过智能技术生成

android ListView组件使用实在是太频繁了,因此特意制作了Android ListView的详细使用教程,还有和listview配套使用的BaseAdapter以及ArrayAdapter都会在文章后面有讲到,非常的实用。

为了便于理解下面listview的使用方法,我想先让你看下本人的android项目的目录结构是很有必要的,如图。

b9564d8f399c3c4ee406453aa966eda0.png

案例一:首先我们用ListView制作一个简单的联系人列表,没有头像,就只有一个名字,暂时只用了activity_main.xml这一个layout xml文件,请先不考虑其它几个文件。效果如图。

bbdf3c92f90cdb6cffbec132940fe148.png

1:首先我们在activity_main.xml这个文件里面定义一个listview标签,用于显示表格数据,代码如下。<?xml  version="1.0" encoding="utf-8"?>

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/activity_main"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context="com.baidu.listviewdemo.MainActivity">

android:layout_width="match_parent"

android:layout_height="match_parent"

android:id="@+id/myListView">

2:然后我们在对应的MainActivity.java文件里面写方法,给listview添加数据,代码如下,运行之后就是上面图片的效果。package com.baidu.listviewdemo;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.AdapterView;

import android.widget.ArrayAdapter;

import android.widget.ListView;

public class MainActivity extends AppCompatActivity {

private  ListView listView;

String[] phones = new String[] { "Android", "iOS", "WindowsMobile", "Blackberry","YunOS"};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

listView = (ListView)findViewById(R.id.myListView);

ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,phones);

listView.setAdapter(adapter);

}

}

提醒:simple_list_item_1这个是android系统提供的layout,它的相当于listview行对象,phones是一个存有数据的数组,ArrayAdapter会自动给每一行对象添加数据。

案例二:由于上面案例一的listview太过简单,有时候不符合我们的需求,因此我们需要自定义listview的row(行),效果如图。

0a41f278693c4e2bfa5b9c360c7434eb.png

1:我们将activity_main.xml里面的Listview标签给去除掉,因为我们要自定义新建一个叫list_view.xml的layout文件,新建方法为:选择layout文件夹->右键new->xml->layout xml file,新建之后我们在list_view.xml文件中自定义一个Listview的标签,宽高设置为屏幕大小(match_parent),代码如下。<?xml  version="1.0" encoding="utf-8"?>

android:layout_width="match_parent"

android:layout_height="match_parent">

android:layout_width="match_parent"

android:layout_height="match_parent"

android:id="@+id/myListView">

2:我们再新建一个layout_item.xml的layout文件,里面自定义两个ImageView和TextView标签,用于在每一行显示头像和名字,代码如下。<?xml  version="1.0" encoding="utf-8"?>

android:paddingLeft="10dp"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:adjustViewBounds="true"

android:maxWidth="30dp"

android:maxHeight="30dp"

android:layout_gravity="center_vertical"

android:id="@+id/logo_image"

/>

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:paddingLeft="10dp"

android:height="44dp"

android:textSize="16dp"

android:gravity="center_vertical"

android:id="@+id/my_text"/>

3:自定义一个MyAdapter类,并继承ArrayAdapter类(BaseAdapter也是可以的),实现ArrayAdapter里面所有的方法,代码如下。package com.baidu.listviewdemo;

import android.content.Context;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ArrayAdapter;

import android.widget.BaseAdapter;

import android.widget.ImageView;

import android.widget.TextView;

public class MyAdapter extends ArrayAdapter {

private Context context;

private String[] phones;

//Inflater意思为充气机,就是用于设置每行数据的对象

private LayoutInflater flater;

public MyAdapter(Context context, int resource,String[] phones) {

super(context,resource,phones);

this.context = context;

this.phones = phones;

flater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

}

@Override

public int getCount() {

return phones.length;

}

@Override

public Object getItem(int position) {

return phones[position];

}

@Override

public long getItemId(int position) {

return position;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

if (convertView == null){

//通过flater获取lis行对象

convertView = flater.inflate(R.layout.layout_item,parent,false);

}

//设置头像数据

ImageView imageView = (ImageView)convertView.findViewById(R.id.logo_image);

imageView.setImageResource(R.drawable.ic_account_circle);

//设置名称数据

TextView textView = (TextView)convertView.findViewById(R.id.my_text);

textView.setText(phones[position]);

return convertView;

}

}

4:在MainActivity.java中加载我们的listView,这样就会显示我们的联系人列表数据了,代码如下。package com.baidu.listviewdemo;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.AdapterView;

import android.widget.ArrayAdapter;

import android.widget.ListView;

public class MainActivity extends AppCompatActivity {

private  ListView listView;

String[] phones = new String[] { "Android", "iOS", "WindowsMobile", "Blackberry","YunOS"};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//setContentView(R.layout.activity_main);

//设置list_view.xml为程序主页面

setContentView(R.layout.list_view);

//获取listview对象

listView = (ListView)findViewById(R.id.myListView);

//自定义adapter

MyAdapter adapter = new MyAdapter(this,R.layout.layout_item,phones);

listView.setAdapter(adapter);

//为每一行添加点击事件

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override

public void onItemClick(AdapterView> parent, View view, int position, long id) {

System.out.println("你选择的手机是:"+phones[position]);

}

});

}

}

提示:R.layout.layout_item也是行对象,里面包含了Imageview和TextView两个元素,所以需要作为参数传给ArrayAdapter对象。

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/android/180.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值