如何在不使用自定义适配器的情况下从 ListView 获取特定的 TextView (View)?
Posted
技术标签:
【中文标题】如何在不使用自定义适配器的情况下从 ListView 获取特定的 TextView (View)?【英文标题】:How to get specific TextView (View ) from a ListView without use of custom Adapter? 【发布时间】:2016-02-26 15:27:09 【问题描述】:这是我想要获得ListView
的特定子视图的代码:
ListView list = (ListView) findViewById(R.id.lst);
ArrayAdapter<String> adap = new ArrayAdapter<String>(this,
R.layout.text, R.id.txt1, data);
list.setAdapter(adap);
int num = list.getCount();
for (int j = 0; j < num; j++)
view1 = findViewById((int)list.getItemIdAtPosition(j));
text_view = list.getChildAt(j);
long lg = list.getItemIdAtPosition(j);
if (text_view != null)
text_view.startAnimation(animation); // getting null in text_view .
if (view1 != null)
view1.startAnimation(animation); // getting null in view1 .
【问题讨论】:
【参考方案1】:使用 getChildAt 获得的视图是列表视图中包含的一行。这取决于您如何定义该行。如果您的行包含一个布局,然后是一个 textView,那么您获得的子视图就是布局。那么 textView 就是那个布局的子视图。
【讨论】:
【参考方案2】:假设您选择的项目位置在名为 pos 的变量中。
pos=2; // selected item position
int nFirstPos = listNotification.getFirstVisiblePosition();
int nWantedPos = pos - nFirstPos;
if ((nWantedPos >= 0) && (nWantedPos <= listNotification.getChildCount()))
View view = listNotification.getChildAt(nWantedPos);
if (view!=null)
//add your code here
TextView textData=(TextView) view.findViewById(R.id.txt1);
【讨论】:
【参考方案3】:我认为您可以仅对可见项目执行此操作,并且您应该知道 listview 的所有项目都不是一次可见的。请检查以下链接,您将解决您的问题:
android: Access child views from a ListView
In an android ListView, how can I iterate/manipulte all the child views, not just the visible ones?
【讨论】:
以上是关于如何在不使用自定义适配器的情况下从 ListView 获取特定的 TextView (View)?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 FirebaseListAdapter 中使用自定义适配器
如何在不使用for循环的情况下从pyspark中的列表创建数据框?