安卓listview的优化监听的优化怎么拿去position

安卓listview的优化监听的优化怎么拿去position,第1张

这个listview关键是看你的adapter是怎么导入的,类似的有个例子你可以参考: listViewsetOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id)

滑动到屏幕外的View就立刻被回收了 这样就没法判断View 的位置了 如果item都是高度一致的 你可以获取当前最顶端item 的位置 结合它的position来计算

你的采纳是我前进的动力,记得好评和采纳,答题不易,互相帮助,

手机提问的朋友在客户端右上角评价点满意即可

如果你认可我的回答,请及时点击采纳为满意回答按钮!

解决方案:重写BaseAdapter,然后自行获取ListView中每行输入的EditText值

大概算法:重写BaseAdaptergetView函数,用一个数组存储EditText中的值,根据position即数组下标,在getView

中动态更新EditText和动态获取EditText中的值因为ListView中的item是复用的,如果不动态清空或动态获取EditText中

值,就会出现数据紊乱,或者没数据那么在生成EditText的时候要监控其值的变化存储下来

使用方法:

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());

}

以上就是关于安卓listview的优化监听的优化怎么拿去position全部的内容,包括:安卓listview的优化监听的优化怎么拿去position、如何获取滚动之后的listview的某个view在当前屏幕中的位置、如何获取listview的item中的内容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存