要使用酷炫的listView,必须要会用适配器。
什么是适配器呢,适配器就是将布局和数据连接起来的东西。
比如,一个ListView里面有很多行东西(Item),这些东西有可能只是一个字符串,也有可能是一个比较复杂的布局;
但只需要显示字符串的时候,我们可以很简单解决,代码如下;
list的xml布局:
main函数代码:
package com.example.adapter_test;
import android.R.layout;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Adapter;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends Activity {
ListView listView;
String str[]= {"apple","banana","orange","yigeliyigelide","yigeciyigecide"};
//string作为数据源
ArrayAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView)findViewById(R.id.listView1);
adapter = new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1,str);
//第一个是上下文,写当前活动的对象即可
//第二个固定,第三个数据源
listView.setAdapter(adapter);
//将listView和装载了了布局和数据源的适配器绑定,使得listView知道自己该怎么显示,显示什么的东西
}}
运行结果:
文章图片
ListView自定义布局:
第一步:新建一个类,这个类就代表每个ListView项是个什么东西,比如说我每个View都是一条日志,日志由标题和内容组成,那么我可以新建一个下面这样的日志类,代码如下:
package com.example.xiongy;
public class RZ {
String rz_bt;
String rz_nr;
public RZ(String rz_bt,String rz_nr) {
this.rz_bt = rz_bt;
this.rz_nr = rz_nr;
}
public String getbt() {
return rz_bt;
}
public String getnr() {
return rz_nr;
}
}
第二步:新建一个XML文件,这个文件代表着每个View里面的布局是怎样的,我的布局如下,就是两个textview数值排放,代码如下:
第三步:新建一个类,继承ArrayAdapt,并重写getView方法,代码如下:
package com.example.xiongy;
import java.net.ContentHandler;
import java.util.List;
import org.w3c.dom.Text;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class RZAdapter extends ArrayAdapter{
private final int resourceId;
public RZAdapter(Context context,int resource,List objects) {
// TODO Auto-generated constructor stub
super(context, resource, objects);
resourceId = resource;
}
public View getView(int position, View converView,ViewGroup parent) {
RZ rz = (RZ)getItem(position);
View view = LayoutInflater.from(getContext()).inflate(resourceId, null);
TextView text_bt = (TextView)view.findViewById(R.id.textview_bt);
TextView text_nr = (TextView)view.findViewById(R.id.textview_nr);
text_bt.setText(rz.getbt());
text_nr.setText(rz.getnr());
return view;
}
}
第四步:main函数
List RZList= new ArrayList();
//新建一个List存放日志类ListView listView;
listView = (ListView) findViewById(R.id.lsit_rz);
//定义listView//适配器定义和设置
RZAdapter adapter;
adapter = new RZAdapter(MainActivity.this, R.layout.activity_item_rz, RZList);
//第二个参数
//就是上面哪个新建的XML的id
listView.setAdapter(adapter);
【ListView与ArrayAdapter的使用】基本完成,截图改天上。