listviewadapter的简单介绍

http://www.itjxue.com  2023-01-21 07:40  来源:未知  点击次数: 

android中不同的listview可以用同一个adapter吗

饿。。我没明白你的意思。android.app.Activity这个类是不能直接设置Adapter的,如果你想在一个Activity中直接设置Adapter,可以用ListActivity.这个类是Activity的子类,所以Activity有的功能它都有,并接它还有ListView的功能,你可以在这个Activity中直接通过this.setListAdapter(adapter);方法来为这个Activity设置Adapter。

自定义listview数据源adapter时可以继承的类有哪些

Android自定义ListView有下面三个步骤:

第一步:准备主布局文件、组件布局文件等

第二步:获取并整理数据

第三部:绑定数据,这里我们是通过自己编写Adapter类来完成的

自定义listview数据源adapter时可以继承的类有3个,分别如下:

BaseAdapter、SimpleAdapter、ArrayAdapter

1、BaseAdapter

这个是使用到最多的,也是实现功能出来的界面效果是最为明显的。

继承BaseAdapter 是需要实现4个方法的:

?@Override??

????public?int?getCount()?{??

????????return?data.size();??

????}??

????/**?

?????*?获得某一位置的数据?

?????*/??

????@Override??

????public?Object?getItem(int?position)?{??

????????return?null;??

????}??

????/**?

?????*?获得唯一标识?

?????*/??

????@Override??

????public?long?getItemId(int?position)?{??

????????return?position;??

????}??

??

????@Override??

????public?View?getView(int?position,?View?convertView,?ViewGroup?parent)?{??

???????????

????????}?

????}

getCount()用来获取数据的长度,getItem(int position)用来获取某一位置的数据,getItemId(int position)用来获取唯一标识 ,最后getView(int position, View convertView, ViewGroup parent)也是最重要的一步,是用来获取返回每一个item的数据。

2、SimpleAdapter

SimpleAdapter使用起来非常方便而且简单,使用SimpleAdapter需要先保存数据,然后保存的数据再通过与写的XML文件中的ID进行绑定即可显示在界面。

ListHashMapString,?Object?personList?;

//list中存放的是map??而map中每个key是属性名称,value是person中的属性值??

personList?=?new?ArrayListHashMapString,?Object();

//循环遍历list,将每一个person加入到map中

for?(Person?p?:?list)?{

HashMapString,Object?map=new?HashMapString,?Object();

map.put("ida",?p.getId());

map.put("namea",?p.getName());

map.put("balancea",?p.getBalance());

personList.add(map);

}

//为ListView添加adapter,simpleadapter中第二个参数是ListHashMapString,?Object

//new?String[]?{?"ida",?"namea",?"balancea"}代表map中的键值,new?int[]?

{?R.id.personid,?R.id.balance,?R.id.name?}

//代表R.layout.item,中的textView的id

view.setAdapter(new?SimpleAdapter(getApplicationContext(),?personList,

R.layout.item,?new?String[]?{?"ida",?"namea",?"balancea"?},

new?int[]?{?R.id.personid,?R.id.balance,?R.id.name?}));

进行绑定后即可显示在界面。

3、ArrayAdapter

ArrayAdapter是使用的最少的一种,因为只能用来显示一个纯文本list。

listview自定义适配器一般继承于

BaseAdapter。

自定义的适配器一般继承BaseAdapter类,listViewAdapter=newListViewAdapter(this,listItems)。

自定义适配器是我们开发中经常会使用到的适配器对象,它可以将动态变化的数据适配给ListView,并且与ArrayAdapter、SimpleAdapter都继承BaseAdapter。

android listviewadapter 怎么进行排序

代码片段如下

private?void?sortInfo()?{??

????ComparatorInfoTmp?itemComparator?=?new?ComparatorInfoTmp()?{??

????????public?int?compare(InfoTmp?info1,?InfoTmp?info2){??

????????????return?info1.getAge().compareTo(info2.getAge());??

????????}??

????};??

????Collections.sort(mProfileList,?itemComparator);??

}??

[java]?view?plain?copy?

public?class?UserListAdapter?extends?BaseAdapter?{??

????private?Context?mContext;??

????private?ListInfoTmp?mUserList;??

??

????public?UserListAdapter(Context?context,?ListInfoTmp?users)?{??

????????mContext?=?context;??

????????mUserList?=?users;??

????}??

??

????public?int?getCount()?{??

????????return?mUserList.size();??

????}??

??

????public?Object?getItem(int?position)?{??

????????if?(position?=?mUserList.size())?{??

????????????return?null;??

????????}??

????????return?mUserList.get(position);??

????}??

??

????public?long?getItemId(int?position)?{??

????????return?position;??

????}??

??

????public?View?getView(int?position,?View?convertView,?ViewGroup?parent)?{??

????????LayoutInflater?inflater?=?LayoutInflater.from(mContext);??

????????convertView?=?inflater.inflate(R.layout.user_item,?null);??

????????TextView?text?=?(TextView)?convertView.findViewById(R.id.text);??

????????ImageView?icon?=?(ImageView)?convertView.findViewById(R.id.icon);??

????????ImageButton?btnEdit?=?(ImageButton)?convertView.findViewById(R.id.edit);??

????????ImageButton?btnDel?=?(ImageButton)?convertView.findViewById(R.id.delete);??

????????//...?...??

????????return?convertView;??

????}??

}??

[java]?view?plain?copy?

private?void?refreshAdapter()?{??

????//?...?...???

????sortInfo();??

????mListVew.setAdapter(new?UserListAdapter(mContext,?mProfileList));??

}

如何在listview的adapter中跳转到另一个activity

是由第一个界面跳转到第二个界面中的吗?如果是的话,你开启第二个的时候用startActivityRorResult,然后点击提交之后,先setResult--然后finish把通过或者未通过返回到第一个界面中,在第一个界面覆盖onActivityResult接收返回来的数据,如果需要更改listview里面的状态或者什么的,在adapter里面定义一个方法,里面写上notifyDataSetChanged应该就可以了

Android listview adapter 有多个布局时view的重用

多个布局,是不是指有多个不同的Item布局?

你需要重写getViewTypeCount()和getItemViewType()方法,getView()里根据不同的viewType去判断convertView是否为空,加载不同的布局,设置不同的Tag

(责任编辑:IT教学网)

更多

推荐网络创业文章