关于listviewadapter的信息
android中不同的listview可以用同一个adapter吗
new 两个 adapter 就可以了。然后设置到对应的list中去
如果是从数据库里读出来的话,既然不同,还是用两个adapter吧,切换的时候另一个clear()。如果是往数据库里写的话,那跟Sqlite有关吧,我不太懂那方面。。。。我也是刚学习android。。。
listview适配器如何实现
创建继承BaseAdapter并实现其抽象方法的类MyListViewAdapter
说明
下面的讲解中,只创建自定义的适配器类,如何使用请参考android中常用控件的使用之ListView
1.创建类MyListViewAdapter
创建类MyListViewAdapter,该类继承BaseAdapter,并实现其抽象方法:
1
2
3
4
int getCount();
Object getItem(int position);
long getItemId(int position);
View getView(int position,View convertView,ViewGroup parent);
getCount需要返回有多少个item,也就是说最会在listview中展示这么多行
getItem需要返回参数position位置的数据
getItemId返回position就行了
2.给MyListViewAdapter类添加成员变量和构造方法
两个成员变量
1
2
ListString list;
Context context;
list表示要显示的数据,context变量在生成View对象时需要用到
构造方法:构造方法是为了给两个成员变量赋值
1
2
3
4
public MyListViewAdapter(ListString list , Context context) {
this.list = list;
this.context = context;
}
3.给getCount,getItem,getItemId方法添加代码
getCount需要返回有多少个item,也就是说最会在listview中展示这么多行,所以返回list.size
getItem需要返回参数position位置的数据,也就是list中第position项的值list.get(position)
getItemId返回position就行了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
4.给getView方法添加代码
getView方法是返回位置为position的View对象,第二个参数convertView考虑到资源重用问题,在上下滑动的过程中,需要显示某项的时候才会调用getView方法,而如果有某项被隐藏不显示,就会把不显示那一行的View作为convertView参数传入,如果没有某项被隐藏,convertView值为null。可以通过下面代码中的if(convertView!=null)中的输出来看哪一行被隐藏了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@Override
public View getView(int position, View convertView, ViewGroup parent) {
System.out.println("调用getView方法,显示position="+position+"项");
if(convertView!=null){
TextView t = (TextView) convertView.findViewById(R.id.firstTextView);
System.out.println(t.getText());
}else{
LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = layoutInflater.inflate(R.layout.item_mylistviewadapter, null);
}
TextView t = (TextView)(convertView.findViewById(R.id.firstTextView));
t.setText(list.get(position));
if(position%2==0)
{
t.setBackgroundColor(Color.WHITE);
}
else{
t.setBackgroundColor(Color.GRAY);
}
return convertView;
}
补充:通过xml生成View对象
通过Context对象生成一个LayoutInflater对象
调用LayoutInflater对象的inflate方法生成控件对象,inflate方法的第一个参数为xml文件,第二个参数一般为null。返回值为该xml文件最外层的标签对象。
1
2
LayoutInflater layoutInflater =(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout convertView =(LinearLayout)layoutInflater.inflate(R.layout.item_mylistvie
源代码下载
pan.baidu.com/s/1ntuQDdv
如何在listview的adapter中跳转到另一个activity
是由第一个界面跳转到第二个界面中的吗?如果是的话,你开启第二个的时候用startActivityRorResult,然后点击提交之后,先setResult--然后finish把通过或者未通过返回到第一个界面中,在第一个界面覆盖onActivityResult接收返回来的数据,如果需要更改listview里面的状态或者什么的,在adapter里面定义一个方法,里面写上notifyDataSetChanged应该就可以了
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的用法包括如何初始化数据
public class MainActivity extends Activity {
//定义数组
private String[] data = { "Apple", "Banana", "Orange", "Watermelon",
"Pear", "Grape", "Pineapple", "Strawberry", "Cherry", "Mango" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//adapter适配
ArrayAdapterString adapter = new ArrayAdapterString(
MainActivity.this, android.R.layout.simple_list_item_1, data);
ListView listView = (ListView) findViewById(R.id.list_view);
listView.setAdapter(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。