android-ListView的简单用法
2015-04-14 22:24
549 查看
1.为了方便,将讲解注释写到了代码中,这样应该便于观看,思路也比较连续
源代码:http://download.csdn.net/detail/wangxuewei111/8579529
代码:
MainActivity.javapackage com.king.listviewtest; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.Toast; public class MainActivity extends Activity { private static List<Fruit> fruitList = new ArrayList<Fruit>(); static{ Fruit apple = new Fruit("Apple",R.drawable.apple_btn); Fruit apple1 = new Fruit("Banana",R.drawable.orage_btn); Fruit apple2 = new Fruit("Pear",R.drawable.water_btn); Fruit apple3 = new Fruit("Lemon",R.drawable.water_btn); Fruit apple4 = new Fruit("peach",R.drawable.orage_btn); Fruit apple5 = new Fruit("plum",R.drawable.apple_btn); Fruit apple6 = new Fruit("nectarine",R.drawable.water_btn); Fruit apple7 = new Fruit("honeydew",R.drawable.orage_btn); fruitList.add(apple); fruitList.add(apple1); fruitList.add(apple2); fruitList.add(apple3); fruitList.add(apple4); fruitList.add(apple5); fruitList.add(apple6); fruitList.add(apple7); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /*String[] data = {"peach","Lemon","Pear","avocado","cantaloupe","Banana","Grape","raisins","plum","apricot","nectarine","honeydew","orange","tangerine"}; //android.R.layout.simple_list_item_1:android内置的布局文件,里面只有一个TextView,可用于简单的显示一段文本 ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1,data); ListView listView = (ListView) findViewById(R.id.list_view); listView.setAdapter(adapter);*/ //依次传入上下文,ListView子项布局的id,以及要适配的数据 FruitAdapter friuitAdapter = new FruitAdapter(MainActivity.this, R.layout.fruit_item, fruitList); ListView listView = (ListView) findViewById(R.id.list_view); //将构建好的适配器对象传递进去 listView.setAdapter(friuitAdapter); //ListView的点击事件 listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Fruit fruit = fruitList.get(position); Toast.makeText(MainActivity.this, fruit.getName(), Toast.LENGTH_SHORT).show(); } }); } }FruitAdapter.java
package com.king.listviewtest; import java.util.List; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; public class FruitAdapter extends ArrayAdapter<Fruit>{ private int resourceId; public FruitAdapter(Context context,int textViewResourceId, List<Fruit> objects) { super(context,textViewResourceId, objects); resourceId = textViewResourceId; } @Override //这个方法在每个子项被滚动到屏幕内的时候会被调用 public View getView(int position, View convertView, ViewGroup parent) { Fruit fruit = getItem(position);//获取当前fruit实例 View view; ViewHolder viewHolder; //提升ListView的运行效率,convertView这个参数用于将之前加载好的布局进行缓存,以便之后可以重用 if(convertView == null){ viewHolder = new ViewHolder(); //使用LayoutInflater来为这个子项加载我们传入的布局,并分别调用他们的setImageResource,setText来显示 view = LayoutInflater.from(getContext()).inflate(resourceId, null); viewHolder.fruitImage = (ImageView) view.findViewById(R.id.fruit_image); viewHolder.fruitName = (TextView) view.findViewById(R.id.fruit_name); view.setTag(viewHolder); //将viewHolder存储到View中,当convertView不为空的时候则调用view的getTag()方法,把ViewHolder重新取出 }else{ view = convertView; viewHolder = (ViewHolder) view.getTag(); } viewHolder.fruitImage.setImageResource(fruit.getImageId()); viewHolder.fruitName.setText(fruit.getName()); return view; } class ViewHolder{ ImageView fruitImage; TextView fruitName; } }Fruit.java
package com.king.listviewtest; public class Fruit { private String name; private int imageId; public Fruit(String name, int imageId) { this.name = name; this.imageId = imageId; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getImageId() { return imageId; } public void setImageId(int imageId) { this.imageId = imageId; } }activity_main.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="vertical" > <!-- 先为ListView指定了一个id,然后将宽度和高度都设置为match_parent,这样ListView也就 占据了整个布局的空间 --> <ListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent" ></ListView> </LinearLayout>fruit_item.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="vertical" > <ImageView android:id="@+id/fruit_image" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/fruit_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginLeft="10dip" /> </LinearLayout>
源代码:http://download.csdn.net/detail/wangxuewei111/8579529
相关文章推荐
- Android—— ListView 的简单用法及定制ListView界面
- Android—— ListView 的简单用法及定制ListView界面
- Android中关于ExpandableListView用法的一个简单小例子
- androidSwipeLayout简单用法,仿qq会话列表listview左右滑动
- 【Android成长之路】最常用和最难用的控件——ListView的浅谈(ListView 的简单用法)
- Android学习总结(十三) ———— ListView 简单用法
- 【Android】浅谈ListView的简单用法
- Android之ListView的简单用法
- android:ListView 的简单用法
- Android关于ExpandableListView用法的一个简单小例子。仿QQ列表
- android_listView一些简单用法(动态)
- Android 学习笔记之ExpandableListView UI的简单用法
- Android列表用法之一:实战简单ListView
- android中ListView的简单用法
- Android中ListView的简单使用
- Android Scroller简单用法
- Android Scroller简单用法
- Android的startActivityForResult用法简单介绍
- android 中listview 的用法
- android ListView的简单实现