listviewadapter的简单介绍
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