安卓学习-(滚动布局:ListView)

8、ListView
简单的listview,可以滚动到屏幕外
private String[] data = { "apple" , "Orange" };

private List<Fruit> fruitList = new ArrayList<Fruit>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout. activity_main );
ArrayAdapter<String> adaper = new ArrayAdapter<String>(
MainActivity. this , android.R.layout. simple_list_item_1 , data );
ListView listview = (ListView) findViewById(R.id. list_view );
listview.setAdapter(adaper);
}

9、ListView2 复杂listview实例
activity.xml
<? xml version= "1.0" encoding= "utf-8" ?>
< LinearLayout xmlns: android = "http://schemas.android.com/apk/res/android"
android :orientation= "vertical"
android :layout_width= "match_parent"
android :layout_height= "match_parent" >
< ListView
android :id= "@+id/list_view"
android :layout_width= "match_parent"
android :layout_height= "match_parent" >
</ ListView >
</ LinearLayout >

MainActivity.java
package com.example.listviewtest;

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;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

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 AdapterView.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();
}
});
}

private void initFruits() {
for ( int i = 0 ; i < 2 ; i++) {
Fruit apple = new Fruit( "Apple" , R.drawable. apple_pic );
fruitList .add(apple);
Fruit banana = new Fruit( "Banana" , R.drawable. banana_pic );
fruitList .add(banana);
Fruit orange = new Fruit( "Orange" , R.drawable. orange_pic );
fruitList .add(orange);
Fruit watermelon = new Fruit( "Watermelon" , R.drawable. watermelon_pic );
fruitList .add(watermelon);
Fruit pear = new Fruit( "Pear" , R.drawable. pear_pic );
fruitList .add(pear);
Fruit grape = new Fruit( "Grape" , R.drawable. grape_pic );
fruitList .add(grape);
Fruit pineapple = new Fruit( "Pineapple" , R.drawable. pineapple_pic );
fruitList .add(pineapple);
Fruit strawberry = new Fruit( "Strawberry" , R.drawable. strawberry_pic );
fruitList .add(strawberry);
Fruit cherry = new Fruit( "Cherry" , R.drawable. cherry_pic );
fruitList .add(cherry);
Fruit mango = new Fruit( "Mango" , R.drawable. mango_pic );
fruitList .add(mango);
}
}
}


Fruit.java
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 ;
}
}

fruit_item.xml
<? xml version= "1.0" encoding= "utf-8" ?>
< LinearLayout xmlns: android = "http://schemas.android.com/apk/res/android"
android :orientation= "horizontal"
android :layout_width= "match_parent"
android :layout_height= "match_parent" >
< 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_vertical"
android :layout_marginLeft= "10dp" />
</ LinearLayout >

FruitAdapter.java
package com.example.listviewtest;

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;

import java.util.List;

public class FruitAdapter extends ArrayAdapter<Fruit> {

private int resourceId ;

public FruitAdapter(Context context, int itemLayoutResourceId , List<Fruit> objects) {
super (context, itemLayoutResourceId , objects);
resourceId = itemLayoutResourceId ;
}

@Override
//View convertView 用于将之前加载好的数据缓存
public View getView( int position, View convertView, ViewGroup parent) {
Fruit fruit = getItem(position); // 获取当前项的Fruit实例
View view;
ViewHolder viewHolder;
if (convertView == null ) {
// 如果说当前子布局没有在缓存中,那么就在这里创建这个view
// 然后把布局加载到 viewHolder 里面;再把 viewHolder 放到 view中
// 然后把当前一个子布局的值填进去,最后返回view就行,不用对里面的viewHolder 做操作。
view = LayoutInflater. from (getContext()).inflate( resourceId , parent, false );
viewHolder = new ViewHolder();
viewHolder. fruitImage = (ImageView) view.findViewById (R.id. fruit_image );
viewHolder. fruitName = (TextView) view.findViewById (R.id. fruit_name );
view.setTag(viewHolder); // 将ViewHolder存储在View中
} else {
view = convertView;
viewHolder = (ViewHolder) view.getTag(); // 重新获取ViewHolder
}
viewHolder. fruitImage .setImageResource(fruit.getImageId());
viewHolder. fruitName .setText(fruit.getName());
return view;
}
class ViewHolder {
ImageView fruitImage ;
TextView fruitName ;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值