怎么用eclipse编写一个list view
1个回答
2016-10-20 · 知道合伙人软件行家
关注
展开全部
方法/步骤
1
新建一个android项目,名称为ListViewAuto,其余参数可以自己配置,点击完成,生成项目文件
2
完成列表要展示的选项实例类,ItemView,其中属性有
//要展示的图片信息
private ImageView image;
//标题信息
private TextView title;
//按钮信息
private Button button;
然后生成对应get,set方法
3
设置配置文件,main.xml
声明ID以及长宽属性
<ListView
android:id="@+id/listInfo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"></ListView>
4
设置ListView中各个选项的样式配置文件listview.xml,声明一个ImageView展示图片,TextView展示文本信息,Button展示按钮信息
5
实现自定义适配器,必须手动映射数据,这时就需要重写getView()方法,系统在绘制列表的每一行的时候将调用此方法。 ListView在开始绘制的时候,系统自动调用getCount()函数,根据函数返回值得到ListView的长度,然后根据这个长度,调用getView()逐一画出每一行。主要展示getView()方法实现
//展示记录信息
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ItemView item=null;
if(convertView==null){
item= new ItemView();
//获得组件,实例化组件
convertView=layoutInflater.inflate(R.layout.listview, null);
item.setImage((ImageView)convertView.findViewById(R.id.imageView));
item.setTitle((TextView)convertView.findViewById(R.id.title));
item.setButton((Button)convertView.findViewById(R.id.button));
//这个步骤很重要!!!
//可以使用setTag把查找的view缓存起来方便多次重用
convertView.setTag(item);
}else{
item=(ItemView)convertView.getTag();
}
//绑定数据 ,将传入data进行逐个赋值
item.getImage().setBackgroundResource((Integer)data.get(position).get("imageView"));
item.getTitle().setText((String)data.get(position).get("title"));
item.getButton().setText((String)data.get(position).get("button"));
return convertView;
}
下面是自定义适配器ListViewAdapter的代码图例
6
主体函数编写,先是找到ListView控件,将数据放入适配器中,进行数据展示
public class ListViewAutoShow extends Activity {
/** Called when the activity is first created. */
private ListView listInfo=null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
listInfo=(ListView)findViewById(R.id.listInfo);
List<Map<String, Object>> result=getData();
listInfo.setAdapter(new ListViewAdapter(this, result));
}
public List<Map<String, Object>> getData() {
// TODO Auto-generated method stub
List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();
for (int i = 0; i < 10; i++) {
Map<String, Object> map=new HashMap<String, Object>();
map.put("imageView", R.drawable.ico_info);
map.put("title", "标题信息"+i);
map.put("button", "查看按钮"+i);
list.add(map);
}
return list;
}
}
1
新建一个android项目,名称为ListViewAuto,其余参数可以自己配置,点击完成,生成项目文件
2
完成列表要展示的选项实例类,ItemView,其中属性有
//要展示的图片信息
private ImageView image;
//标题信息
private TextView title;
//按钮信息
private Button button;
然后生成对应get,set方法
3
设置配置文件,main.xml
声明ID以及长宽属性
<ListView
android:id="@+id/listInfo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"></ListView>
4
设置ListView中各个选项的样式配置文件listview.xml,声明一个ImageView展示图片,TextView展示文本信息,Button展示按钮信息
5
实现自定义适配器,必须手动映射数据,这时就需要重写getView()方法,系统在绘制列表的每一行的时候将调用此方法。 ListView在开始绘制的时候,系统自动调用getCount()函数,根据函数返回值得到ListView的长度,然后根据这个长度,调用getView()逐一画出每一行。主要展示getView()方法实现
//展示记录信息
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ItemView item=null;
if(convertView==null){
item= new ItemView();
//获得组件,实例化组件
convertView=layoutInflater.inflate(R.layout.listview, null);
item.setImage((ImageView)convertView.findViewById(R.id.imageView));
item.setTitle((TextView)convertView.findViewById(R.id.title));
item.setButton((Button)convertView.findViewById(R.id.button));
//这个步骤很重要!!!
//可以使用setTag把查找的view缓存起来方便多次重用
convertView.setTag(item);
}else{
item=(ItemView)convertView.getTag();
}
//绑定数据 ,将传入data进行逐个赋值
item.getImage().setBackgroundResource((Integer)data.get(position).get("imageView"));
item.getTitle().setText((String)data.get(position).get("title"));
item.getButton().setText((String)data.get(position).get("button"));
return convertView;
}
下面是自定义适配器ListViewAdapter的代码图例
6
主体函数编写,先是找到ListView控件,将数据放入适配器中,进行数据展示
public class ListViewAutoShow extends Activity {
/** Called when the activity is first created. */
private ListView listInfo=null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
listInfo=(ListView)findViewById(R.id.listInfo);
List<Map<String, Object>> result=getData();
listInfo.setAdapter(new ListViewAdapter(this, result));
}
public List<Map<String, Object>> getData() {
// TODO Auto-generated method stub
List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();
for (int i = 0; i < 10; i++) {
Map<String, Object> map=new HashMap<String, Object>();
map.put("imageView", R.drawable.ico_info);
map.put("title", "标题信息"+i);
map.put("button", "查看按钮"+i);
list.add(map);
}
return list;
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询