ListView的常用方法

如何在ListView的头部和尾部添加图片或按钮以及当ListView没有数据显示的时候显示“没有数据”的一个文本。有两种方法:第一种是直接在.java文件中动态的添加。第二种先在.xml文件中先设置其头部尾部布局文件,然后再到.java文件中解析.xml文件。
第一种步骤:

代码:
package com.xiaocai.listviewdemo;
import java.util.ArrayList;
import java.util.List;
import android.R.anim;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.provider.MediaStore.Images.ImageColumns;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;

public class MainActivity extends ActionBarActivity {
//声明控件
private ListView lv;
private List list;
private ArrayAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//关联控件
lv=(ListView) findViewById(R.id.listview);
//1.准备数据源数
list=new ArrayList();//该数据源是ArrayList数组型
for(int i = 0;i<20;i++){
list.add(“item”+i);
}
//2.将数据源加载到适配器中,所以先定义一个适配器
adapter=new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1, list);
//在ListView的头部尾部添加图片或按钮(注意:addHeaderView()方法一定要在listview设置适配器之前添加)
//添加一张图片在头部
ImageView iv=new ImageView(MainActivity.this);//声明一个View是一个ImageView类型
iv.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));//设置宽高度
iv.setImageResource(R.drawable.picture);//设置ImageView的资源
//这里是一个View类型的,所以提前要声明这个View是什么类型的,还可以进行对ImageView进行设置宽度和高度等,然后设置ImageView的资源,最后将ImageView添加到头部
lv.addHeaderView(iv);
//添加一个按钮在尾部
Button btn=new Button(MainActivity.this);
btn.setText(“加载更多”);
btn.setTextSize(20);//按钮里面的字体大小设置20
//按钮设置监听
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int index=list.size();//获取当前集合的下标
for(int i=index;i< index+20;i++){
list.add(“item”+20);
}
adapter.notifyDataSetChanged();//更新适配器
}
});
lv.addFooterView(btn);//在ListView尾部添加指定参数的view视图
//3.将适配器中的数据加载到ListView中
lv.setAdapter(adapter);
}

}

第二种步骤:
1.先在layout—文件中设置头部head.xml或footer.xml底部的布局文件
2.将.xml文件转换为View对象,因此要使用布局填充器,布局填充器的只要目的是将.xml文件转换为View视图。
View headerView=Layoutflater.from(context).inflate(resoure,root);
//context:表示上下文
//resoure:表示布局文件也就是.xml文件
//root:表示当前的视图(既头部视图或尾部视图)是否填充子视图,一般为null
3.对视图进行设置(这一步可以省略因为第二步已经将.xml文件解析成View视图,直接显示就可以了。但对于按钮最好不省略,因为按钮要进行设置监听)
(1)首先获得ImageView或BUtton对象,这时要注意因为ImageView或Button对象是在headView中
ImageView iv=(ImageView)headVIew.finViewById(R.id.image);
或Button btn=(Button)headVIew.finViewById(R.id.btn);
//这里的id是图片或按钮的id
(2)然后就可以进行设置了
Iv.setImageResoure(R.drawable….);
4.最后调用addHeadView()或addFooterView()
Lv.addHeadView(headView);
或lv.addFooterView(footView);
代码:
package com.xiaocai.imageview;
import java.util.ArrayList;
import java.util.List;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
public class MainActivity extends ActionBarActivity {
private ListView lv;
private List list;
private ArrayAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv=(ListView) findViewById(R.id.listView);
list=new ArrayList();
for(int i=0;i<20;i++){
list.add(“item”+i);
}
adapter=new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1, list);
//在头部添加一张图片
//1.解析.xml文件
View headView=LayoutInflater.from(MainActivity.this).inflate(R.layout.head, null);
//2.获取ImageView对象,进行图片设置
ImageView iv=(ImageView) headView.findViewById(R.id.imageView);
iv.setImageResource(R.drawable.aaa);
//3.调用addHeaderView()方法在ListView中添加图片
lv.addHeaderView(headView);
//在底部添加一个按钮
//1.解析.xml文件
View footer=LayoutInflater.from(MainActivity.this).inflate(R.layout.footer, null);
//2.获取Button对象
Button btn=(Button) footer.findViewById(R.id.button);
//3.按钮进行设置监听
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int index=list.size();
for(int i=index;i < index+20;i++){
list.add(“item”+i);
}
Log.i(“TEST”, “按钮被点击了”);
adapter .notifyDataSetChanged();
}
});
lv.addFooterView(footer);
lv.setAdapter(adapter);
}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值