首先写个ListView 的数据适配器,抽离出来,写一个对象,用来设置listView 每条Item 的 的对象,可以采用ConvertView 设置setTag 将View 房子tag中,可以通过ListvIEW getChildAt()getTag 取得你想要的对象,设置参数,还是铁代码吧!
getView:
ItemObj viewHolder = null;
if(convertView == null){
viewHolder = new ItemObj();
convertView = mLayoutInflateinflate(Rlayoutsimple_item, null);
viewHoldermSimpleCardName = (TextView) convertViewfindViewById(Ridsimple_name);
viewHoldermIsReTake = (TextView) convertViewfindViewById(Ridsimple_num);
viewHoldermContentNext = (TextView)convertViewfindViewById(Ridstatus);
viewHoldermIsNext = (TextView) convertViewfindViewById(Ridicon_next);
convertViewsetTag(viewHolder);
}else{
viewHolder = (ItemObj) convertViewgetTag();
}
PhotoList aPotoLists = (PhotoList) getItem(position);
if(aPotoLists!= null){
viewHoldermSimpleCardNamesetText(aPotoListsphotoName);
if(KeyInMapITFTAKESIMPLE_PIC_TEP!= null){
viewHoldermIsReTakesetText("("+0+")");
if(KeyInMapITFTAKESIMPLE_PIC_TEPequals(aPotoListsphotoName)){
ArrayList<PhotoList> aLists= (ArrayList<PhotoList>) GlobalParameterget(KeyInMapITFTAKESIMPLE_PIC_TEP);
viewHoldermIsReTakesetText("("+aListssize()+")");
}
}
if(aPotoListsstatusequals("0")){
viewHoldermContentNextsetText("未审核");
viewHoldermIsNextsetBackgroundDrawable(mContextgetResources()getDrawable(Rdrawabletask_list_arrows));
}else{
viewHoldermContentNextsetText("已审核");
viewHoldermIsNextsetText("");
convertViewsetOnClickListener(null);
}
}
obj 对象:
public class ItemObj extends Object{
public TextView mSimpleCardName;// 单证的名称
public TextView mIsReTake;// 0 是 单证拍照 1是重拍照片
public TextView mContentNext;// 未提交 未审核等
public TextView mIsNext;// 箭头
public TextView getmSimpleCardName() {
return mSimpleCardName;
}
public void setmSimpleCardName(TextView mSimpleCardName) {
thismSimpleCardName = mSimpleCardName;
}
public TextView getmIsReTake() {
return mIsReTake;
}
public void setmIsReTake(TextView mIsReTake) {
thismIsReTake = mIsReTake;
}
public TextView getmContentNext() {
return mContentNext;
}
public void setmContentNext(TextView mContentNext) {
thismContentNext = mContentNext;
}
public TextView getmIsNext() {
return mIsNext;
}
public void setmIsNext(TextView mIsNext) {
thismIsNext = mIsNext;
}
ListView lstres = (ListView)findViewById(Ridlstres);// 结果列表for (int i = 0; i < lstresgetChildCount(); i++) { LinearLayout ll = (LinearLayout)lstresgetChildAt(i);// 获得子级 CheckBox chkone = (CheckBox) llfindViewById(Ridchkone);// 从子级中获得控件 Systemoutprintln("chkoneisChecked():----------->"+chkoneisChecked());}如果直接将getChildAt获得的结果转型为CheckBox 会报错,因为ListView的直接子级是LinearLayout ,可以参照xml文件便得知,listxml:<xml version="10" encoding="utf-8">
在Item中写入
TextView textVIew=(TextView)viewfindViewById(Textview的id)
ToastmakeText(所在的Activity,textVIewgetText()toString(), ToastLENGTH_SHORT)show();
既然是通讯录,你的联系人信息应该是保存在一个本地数据库中。你的每一行信息应该是通过listView实现显示的吧,如果你想分别获取联系人的姓名和电话的值,你需要在数据库中写相关的方法用来获取你需要的值,当你点击的时候,你调用数据库中的方法,在数据库中查询姓名和电话然后返回给UI线程。一般获取联系人信息,都不是从listview控件中获得的,一般都是你怎么存进去的,那么你就怎么拿出来,比如你是把联系人放到list集合里,然后显示到listview中,那你就通过你显示进去的顺序和点击listview的顺序相对应,然后在list集合中找到你需要的信息。我的思路是这样的。
创建继承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
List<String> list;
Context context;
list表示要显示的数据,context变量在生成View对象时需要用到
构造方法:构造方法是为了给两个成员变量赋值
1
2
3
4
public MyListViewAdapter(List<String> list , Context context) {
thislist = list;
thiscontext = context;
}
3给getCount,getItem,getItemId方法添加代码
getCount需要返回有多少个item,也就是说最会在listview中展示这么多行,所以返回listsize
getItem需要返回参数position位置的数据,也就是list中第position项的值listget(position)
getItemId返回position就行了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Override
public int getCount() {
return listsize();
}
@Override
public Object getItem(int position) {
return listget(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) {
Systemoutprintln("调用getView方法,显示position="+position+"项");
if(convertView!=null){
TextView t = (TextView) convertViewfindViewById(RidfirstTextView);
Systemoutprintln(tgetText());
}else{
LayoutInflater layoutInflater = (LayoutInflater) contextgetSystemService(ContextLAYOUT_INFLATER_SERVICE);
convertView = layoutInflaterinflate(Rlayoutitem_mylistviewadapter, null);
}
TextView t = (TextView)(convertViewfindViewById(RidfirstTextView));
tsetText(listget(position));
if(position%2==0)
{
tsetBackgroundColor(ColorWHITE);
}
else{
tsetBackgroundColor(ColorGRAY);
}
return convertView;
}
补充:通过xml生成View对象
通过Context对象生成一个LayoutInflater对象
调用LayoutInflater对象的inflate方法生成控件对象,inflate方法的第一个参数为xml文件,第二个参数一般为null。返回值为该xml文件最外层的标签对象。
1
2
LayoutInflater layoutInflater =(LayoutInflater)contextgetSystemService(ContextLAYOUT_INFLATER_SERVICE);
LinearLayout convertView =(LinearLayout)layoutInflaterinflate(Rlayoutitem_mylistvie
源代码下载
panbaiducom/s/1ntuQDdv
以上就是关于android中怎么获取listview的item的信息全部的内容,包括:android中怎么获取listview的item的信息、Android中ListView如何获取列表中选中的CheckBox、Android如何获取listview里面的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)