android中怎么获取listview的item的信息

android中怎么获取listview的item的信息,第1张

首先写个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里面的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10179336.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存