如何获取导航栏中rightBarButtonItem对应self.view的坐标

如何获取导航栏中rightBarButtonItem对应self.view的坐标,第1张

selfview 是一个放到 navigation controller 里的 view, navigation bar 也一样, 所以它俩之间是平级的, 并不是说 navigation bar 是 selfview 的子 view,自然也就没有办法计算 navigation bar 里的子项目在 selfview 里的位置。

我想你想算的应该是 item 在 window 或者在 navigationControllerview 中的位置吧?

你可以用 view debugging 看一下各个 view 之间的层级关系。

解决方案:重写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());

}

我的需求是在recyclerview下的子view中有多个EditText

提交数据的时候需要获取到每个EditText的内容

1第一种方式,直接在Activity中

获取item中跟布局

好吧,结果是不靠谱的,发现每次只能获取到看的见的 recyclerview的跟布局, 还未出现在我们视野的子view,获取为null,

2尝试第二种

但是在fragment中如果直接调用上面的方法,返回的view为空,我们需要用handler的postDelayed方法延迟获取。

结果还是不尽人意,看不见的item,依旧获取不了跟布局

3直接在Adapter中为item中的edittext添加 addTextChangedListener 监听方法

以上就是关于如何获取导航栏中rightBarButtonItem对应self.view的坐标全部的内容,包括:如何获取导航栏中rightBarButtonItem对应self.view的坐标、如何获取listview的item中的内容、获取Recyclerview下的子view等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存