首页 > 代码库 > Android UI 之 ListView
Android UI 之 ListView
一、在代码中创建(不适用XML布局文件)
1.创建一个项目:ListViewLearn
2.修改MainActivity,继承于ListActivity
3.创建一个String数组,用来保存ListView中的现实内容
package com.learn.listviewlearn.utility;public class Util { public static final String[] COUNTRYS = { "中国", "美国", "俄罗斯", "英国", "法国" };}
4.修改onCreate方法,设置一个Adapter,数组中的内容在ListView中现实出来
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setContentView(R.layout.activity_main); this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, Util.COUNTRYS)); }
二、使用XML布局文件来定义ListView的样式
1.修改activity_main.xml文件,添加一个ListView,id必须为android:id="@android:id/list"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#FFFFFF00" > </ListView></LinearLayout>
2.修改OnCreate方法
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, Util.COUNTRYS)); }
三、使用XML布局文件来定义ListViewItem的样式
1.首先创建一个list_view.xml的布局文件
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <ImageView android:id="@+id/imageViewIcon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:contentDescription="@string/icon" > </ImageView> <TextView android:id="@+id/textViewContent" android:layout_width="wrap_content" android:layout_height="wrap_content" > </TextView></LinearLayout>
2.然后创建一个Adapter继承于BaseAdapter,主要修改getCount()和getView()方法
package com.learn.listviewlearn.adapter;import com.learn.listviewlearn.R;import com.learn.listviewlearn.utility.Util;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;public class ListViewAdapter extends BaseAdapter { private Context context; public ListViewAdapter() { // TODO Auto-generated constructor stub } @Override public int getCount() { return Util.COUNTRYS.length; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = LayoutInflater.from(context).inflate(R.layout.list_item, null); ItemViewCache itemViewCache = new ItemViewCache(); itemViewCache.imageView = (ImageView)convertView.findViewById(R.id.imageViewIcon); itemViewCache.textView = (TextView)convertView.findViewById(R.id.textViewContent); convertView.setTag(itemViewCache); } ItemViewCache cache = (ItemViewCache) convertView.getTag(); cache.imageView.setImageResource(Util.images[position]); cache.textView.setText(Util.COUNTRYS[position]); return convertView; } private static class ItemViewCache{ public TextView textView; public ImageView imageView; }}
Util.java
package com.learn.listviewlearn.utility;import com.learn.listviewlearn.R;public class Util { public static final String[] COUNTRYS = { "中国", "美国", "俄罗斯", "英国", "法国" }; public static final int[] images = { R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher };}
四、为ListView添加Click事件。只需要在MainActivity中实现onListItemClick()方法
@Override protected void onListItemClick(ListView l, View v, int position, long id) { Toast.makeText(this, "你选择了" + Util.COUNTRYS[position], Toast.LENGTH_SHORT) .show(); }
源码:HelloListView.zip
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。