如何在不使用自定义适配器的情况下从 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中的列表创建数据框?

如何在不使用表单的情况下从 jsp 调用 servlet

如何在不使用子进程的情况下从 python 自动化脚本中运行 python 'sdist' 命令?

在不加载页面的情况下从“按类别排序帖子”菜单更改 <div> 内的内容