listview控件在php的使用方法,Android控件之ListView使用方法详解

这里我们通过代码及注释来详细说明一下ListView的使用方法。

步骤:

1、定义一个实体类,作为ListView适配器的适配类型

class Color{

private String name;

private int imageId;

public Color(String name,int imageId){

this.name = name;

this.imageId = imageId;

}

public String getName(){

return name;

}

public int getImageId(){

return imageId;

}

}

2、在layout下创建目标item的xml文件,并设置布局。设置item中的imageView时注意imageView的大小及图片的缩放处理

3、创建一个继承自ArratAdapter的适配器(类),注意泛型指定的数据类型

class ColorAdapter extends ArrayAdapter{

private int resourceId;

public ColorAdapter(Context context, int resource, List objects) {//将上下文、ListView子项布局的id和数据传递进来

super(context, resource, objects);

resourceId = resource;//保存ListView子项布局的id

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {//此方法在每个子项被滚动到屏幕内的时候被调用

//return super.getView(position, convertView, parent);

//View view = LayoutInflater.from(getContext()).inflate(resourceId, null);//LayoutInflater来为这个子项加载我们传入的布局

Color color = getItem(position);//获取要显示在view上的数据

View view;

ViewHolder viewHolder;

if(convertView == null){//避免了每次都加载一遍布局,当ListView快速滚动的时候就会出现瓶颈,通过此改动

view = LayoutInflater.from(getContext()).inflate(resourceId, null);//起始创建屏幕显示个数的view,当顶部的view彻底滑出屏幕的时候,

/*初始化viewHolder*///滑出的view就进入到Recycler中准备进行复用,

viewHolder = new ViewHolder();//新滑进来的如果从Recycler中获取到了能复用的view,那么直接改写view中的数据即可

viewHolder.colorImage = (ImageView)view.findViewById(R.id.iv);

viewHolder.colorName = (TxetView)view.findViewById(R.id.tv);

view.setTag(viewHolder);//将viewHolder存储在view中

//如果Recycler中没有能重用的view,则创建新的(ListView中的一个子项)

}else{

view = convertView;

viewHolder = (ViewHolder)view.gettag();//重新获取ViewHolder

}

/*

ImageView colorImage = (ImageView)view.findViewById(R.id.iv);//分别获取item内控件的实例

TextView colorText = (TextView)view.findViewById(R.id.tv);

colorImage.setImageResource(color.getImageId());//分别调用set方法来设置控件内部显示的图片和文字

colorText.setText(color.getName());

*/

viewHolder.colorImage.setImageResource(color.getImageId());

viewHolder.colorName.setText(color.getNmae());

return view;//将设置完的布局返回

}

class ViewHolder{//定义类,用来保存findViewById返回的实例

ImageView colorImage;

TextView colorName;

}

}

4、创建一个ArrayList对象,用作数据和item之间的桥梁

private List colorlist = new ArrayList();

5、由于得初始化item中的数据,可以将ArrayList的初始化封装在一个初始化函数中,在加载完布局文件之后调用初始化即可

private void initColor(){

Color black = new Color("black",R.drawable.black);

colorlist.add(black);//把创建好的对象添加到colorlist中

Color pink = new Color("pink",R.drawable.pink);

colorlist.add(pink);

Color blue = new Color("blue",R.drawable.blue);

colorlist.add(blue);

Color red = new Color("red",R.drawable.red);

colorlist.add(red);

}

6、创建自定义适配器的对象,然后为ListView设置监听器即可

ColorAdapter adapter = new ColorAdapter(MainActivity.this, R.layout.color_item,colorlist);

7、为ListView设置监听器

lv.setOnItemClickListener(new OnItemClickListener() {

@Override

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

Toast.makeText(MainActivity.this, colorList.get(position).getName(), Toast.LENGTH_SHORT).show();

}

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值