listview的优化
2015-07-04 17:56
204 查看
布局
主
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<ListView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</ListView>
</LinearLayout>
列表项
<?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_gravity="center"
android:layout_marginLeft="10dip"
android:layout_height="wrap_content"
android:layout_width="wrap_content"/>
</LinearLayout>
实体类
package com.example.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 int getImageId(){
return imageId;
}
}
适配器类
package com.example.listviewtest;
import java.util.List;
import android.R.layout;
import android.content.Context;
import android.content.res.Resources;
import android.util.Log;
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 resourcesId;
public FruitAdapter(Context context,int textViewResourcesId,List<Fruit> object) {
super(context, textViewResourcesId, object);
resourcesId=textViewResourcesId;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Fruit fruit=getItem(position);
View view;
ViewHolder viewHolder;
if(convertView==null){
view = LayoutInflater.from(getContext()).inflate(resourcesId, null);
viewHolder = new ViewHolder();
viewHolder.fruitImage=(ImageView)view.findViewById(R.id.fruit_image);
viewHolder.fruitName=(TextView)view.findViewById(R.id.fruit_name);
view.setTag(viewHolder);
}else{
view = convertView;
}//if else在这里就结束了
ImageView fruitImage = (ImageView)view.findViewById(R.id.fruit_image);
TextView fruitName = (TextView)view.findViewById(R.id.fruit_name);
fruitImage.setImageResource(fruit.getImageId());
fruitName.setText(fruit.getName());
viewHolder = (ViewHolder) view.getTag();
viewHolder.fruitImage.setImageResource(fruit.getImageId());
viewHolder.fruitName.setText(fruit.getName());
return view;//返回的view如果有问题可能导致出现空白表格一样的图像
}
class ViewHolder{
ImageView fruitImage;
TextView fruitName;
}
}
主活动代码
package com.example.listviewtest;
import java.util.ArrayList;
import java.util.List;
import android.R.string;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import android.os.Build;
public class MainActivity extends ActionBarActivity {
private List<Fruit> fruitList = new ArrayList<Fruit>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initFruits();
FruitAdapter adapter = new FruitAdapter(MainActivity.this,
R.layout.fruit_item, fruitList);
ListView listView = (ListView) findViewById(R.id.list_view);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new OnItemClickListener() {//注册个itemclicklistener
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {//下面要用到position这个参数,实际就是数组下标
Fruit fruit = fruitList.get(position);
Toast.makeText(MainActivity.this, fruit.getName(), Toast.LENGTH_LONG).show();
}
});
}
private void initFruits() {
Fruit apple =new Fruit("Apple", R.drawable.apple);
fruitList.add(apple);
Fruit banana = new Fruit("Banana", R.drawable.banana);
fruitList.add(banana);
Fruit orange = new Fruit("Orange", R.drawable.orange);
fruitList.add(orange);
Fruit watermelon = new Fruit("WaterMelon", R.drawable.melong);
fruitList.add(watermelon);
Fruit pear = new Fruit("Pear", R.drawable.pear);
fruitList.add(pear);
Fruit grape = new Fruit("Grape", R.drawable.grape);
fruitList.add(grape);
Fruit pineapple = new Fruit("PineApple", R.drawable.pineapple);
fruitList.add(pineapple);
Fruit strawberry = new Fruit("StrawBerry", R.drawable.strawberry);
fruitList.add(strawberry);
Fruit cherry = new Fruit("Cherry", R.drawable.pear);
fruitList.add(cherry);
Fruit mango = new Fruit("Mango", R.drawable.pineapple);
}
}
主
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<ListView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</ListView>
</LinearLayout>
列表项
<?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_gravity="center"
android:layout_marginLeft="10dip"
android:layout_height="wrap_content"
android:layout_width="wrap_content"/>
</LinearLayout>
实体类
package com.example.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 int getImageId(){
return imageId;
}
}
适配器类
package com.example.listviewtest;
import java.util.List;
import android.R.layout;
import android.content.Context;
import android.content.res.Resources;
import android.util.Log;
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 resourcesId;
public FruitAdapter(Context context,int textViewResourcesId,List<Fruit> object) {
super(context, textViewResourcesId, object);
resourcesId=textViewResourcesId;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Fruit fruit=getItem(position);
View view;
ViewHolder viewHolder;
if(convertView==null){
view = LayoutInflater.from(getContext()).inflate(resourcesId, null);
viewHolder = new ViewHolder();
viewHolder.fruitImage=(ImageView)view.findViewById(R.id.fruit_image);
viewHolder.fruitName=(TextView)view.findViewById(R.id.fruit_name);
view.setTag(viewHolder);
}else{
view = convertView;
}//if else在这里就结束了
ImageView fruitImage = (ImageView)view.findViewById(R.id.fruit_image);
TextView fruitName = (TextView)view.findViewById(R.id.fruit_name);
fruitImage.setImageResource(fruit.getImageId());
fruitName.setText(fruit.getName());
viewHolder = (ViewHolder) view.getTag();
viewHolder.fruitImage.setImageResource(fruit.getImageId());
viewHolder.fruitName.setText(fruit.getName());
return view;//返回的view如果有问题可能导致出现空白表格一样的图像
}
class ViewHolder{
ImageView fruitImage;
TextView fruitName;
}
}
主活动代码
package com.example.listviewtest;
import java.util.ArrayList;
import java.util.List;
import android.R.string;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import android.os.Build;
public class MainActivity extends ActionBarActivity {
private List<Fruit> fruitList = new ArrayList<Fruit>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initFruits();
FruitAdapter adapter = new FruitAdapter(MainActivity.this,
R.layout.fruit_item, fruitList);
ListView listView = (ListView) findViewById(R.id.list_view);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new OnItemClickListener() {//注册个itemclicklistener
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {//下面要用到position这个参数,实际就是数组下标
Fruit fruit = fruitList.get(position);
Toast.makeText(MainActivity.this, fruit.getName(), Toast.LENGTH_LONG).show();
}
});
}
private void initFruits() {
Fruit apple =new Fruit("Apple", R.drawable.apple);
fruitList.add(apple);
Fruit banana = new Fruit("Banana", R.drawable.banana);
fruitList.add(banana);
Fruit orange = new Fruit("Orange", R.drawable.orange);
fruitList.add(orange);
Fruit watermelon = new Fruit("WaterMelon", R.drawable.melong);
fruitList.add(watermelon);
Fruit pear = new Fruit("Pear", R.drawable.pear);
fruitList.add(pear);
Fruit grape = new Fruit("Grape", R.drawable.grape);
fruitList.add(grape);
Fruit pineapple = new Fruit("PineApple", R.drawable.pineapple);
fruitList.add(pineapple);
Fruit strawberry = new Fruit("StrawBerry", R.drawable.strawberry);
fruitList.add(strawberry);
Fruit cherry = new Fruit("Cherry", R.drawable.pear);
fruitList.add(cherry);
Fruit mango = new Fruit("Mango", R.drawable.pineapple);
}
}
相关文章推荐
- Linux System Calls Hooking Method Summary
- Axure快速原型教程02--创建页面和设置界面
- 写了一个分布式名字服务JCM
- android杀进程方法
- UVa 11300 Spreading the Wealth
- ERROR 1 (HY000): Can't create/write to file '/tmp/#sql_909_0.MYI' (Errcode: 13)
- 关于C++语言从磁盘里面读取浮点数据的问题
- Linux经典书籍推荐
- 类 构造函数和析构函数及SYS/BIOS中说明
- 笔记:REST API 设计
- C#选择文件对话框、选择路径对话框
- 定义了泛型的集合中也可以加入其它类型的数据
- C2_分支结构练习
- hdu 4463 Outlets(最小生成树,kruskal,前向星)
- 算法与数据结构八日谈之四——树论
- C2_分支结构
- node.js C++ 扩展
- 编译原理第五章(2)
- [翻译]用 Puppet 搭建易管理的服务器基础架构(1)
- C1_基本概念练习