比如 你的 adapter中传入的数据是 List strs 那么你搜索的时候 可以搜到 所有 strs中的String ,那么 对应的list index就知道了。一般显示的时候 就是 根据position 来排的,也就是 你list中的index是多少那么在排在view中也是第index个。 查看原帖>>
使用方法:
private List<Map<String, Object>> mCheckItemList = new ArrayList<Map<String, Object>>();
mAdapter = new ListEditorAdapter(this, mCheckItemList);
m_lvListViewsetAdapter(mAdapter);
直接改变mCheckItemList中的数据,然后调用mAdapternotifyDataSetChanged();就可以更新ListView的数据
当然,直接从mCheckItemList也可以获得用户在EditText中输入的数据比较方便
其他:
ListView list= (ListView)findViewById(Ridlist);//获得listview
for (int i = 0; i < listgetChildCount(); i++) {
LinearLayout layout = (LinearLayout)listgetChildAt(i);// 获得子item的layout
EditText et = (EditText) layoutfindViewById(Ridet);// 从layout中获得控件,根据其id
// EditText et = (EditText) layoutgetChildAt(1)//或者根据位置,在这我假设TextView在前,EditText在后
Systemoutprintln("the text of "+i+"'s EditText:----------->"+etgetText());
}
public void onItemClick(AdapterView<> parent, View view, int position, long id) { Systemoutprintln("当前值:"+position); Map<String, String> temp = mapget(position); //temp是该选项的内容 }
首先写个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;
}
getChildAt(position)获取的是当前界面可见的View里的子View,但是ListView可能会有一部分是隐藏的,不能全部显示。能不能再Adapter里定义一个获取子View的方法在外部调用?
我很奇怪你为什么要这么做,这样的做法是不可取的。报错的原因是在Activity的onCreate方法里,listview是还没有子View的,listgetChildAt()得到的自然是null,你再对其 *** 作当然要报空指针异常。还有在listview有Header的时候,getChildAt(0)得到的是会是Header,需要注意一下。
以上就是关于求解如何获取listview中的item全部的内容,包括:求解如何获取listview中的item、如何获取ListView里Item中的控件、android listview如何点击按钮获取所有item的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)