loops-Inflater和循环不起作用

问题描述

Inflater和循环不起作用

在我app上的自定义视图上有问题,我知道这个很可能是和inflaters有关系,但是我不知道怎么解决。
inflater刚刚还是好的,但是它应该是做三次循环,现在却只有一次,这样在我最终布局上我只能得到一个view
相关部分代码是下边这个

 void populate(String strcline, String url){
lLfD = (LinearLayout)findViewById(R.id.lLfD);

    try{

    JSONArray a1 = new JSONArray(strcline);

    for(int i = 0; i < a1.length(); i++){

        JSONArray a2 =  a1.getJSONArray(i);

        final String fUserId = a2.getString(0);
        String userName = a2.getString(1);
        String userPicture = url + a2.getString(2);

        View child = getLayoutInflater().inflate(R.layout.cellevery, lLfD);
        ImageView avatar = (ImageView)findViewById(R.id.cellAvatar);
        downloadFile(userPicture, avatar);
        TextView cellName = (TextView)findViewById(R.id.cellName);
        cellName.setText(userName);

        lLfD.addView(child);

    }
    }catch(Exception e){

    }
    pDialog.dismiss();
}

解决方案

看起来好像你只是需要在inflated视图上运行findViewById,否则它只执行你循环语句中的第一条

   View child = getLayoutInflater().inflate(R.layout.cellevery, lLfD);
    ImageView avatar = (ImageView)child.findViewById(R.id.cellAvatar);
    downloadFile(userPicture, avatar);
    TextView cellName = (TextView)child.findViewById(R.id.cellName);
    cellName.setText(userName);

在你的循环中,findViewById 是这样:

Loop 1:
1LfD->child1->R.id.cellAvatar (findViewById(R.id.cellAvatar) finds this one)

Loop 2:

1Lfd->
   child1->R.id.cellAvatar
   child2->R.id.cellAvatar (findViewById(R.id.cellAvatar) finds the child1.cellAvatar again)

Loop 3:
1LfD->
   child1->R.id.cellAvatar
   child2->R.id.cellAvatar
   child3->R.id.cellAvatar (findViewById(R.id.cellAvatar) finds the child1.cellAvatar again)

通过用child.findViewById(R.id.cellAvatar),每次执行循环的时候,它保证你能找到正确的R.id.cellAvatar

当你调用:

getLayoutInflater().inflate(R.layout.cellevery, lLfD);

你已经设置了parent view作为第二参数,所以你不需要调用:

lLfD.addView(child);
时间: 2025-01-01 02:54:35

loops-Inflater和循环不起作用的相关文章

ASP脚本循环语句

脚本|循环|语句|脚本 在本文上两篇中,我们学习了脚本语言 VBScript 的变量.函数.过程和条件语句,本篇将继续给大家介绍 VBScipt 的循环语句,并对脚本语言在 ASP 中的应用加以总结. 如果有人告诉你学习 ASP 不需要任何编程知识,那么他错了:如果我告诉你学习 ASP 必须掌握一门编程语言,那么我错了.ASP 动态服务器页面环境的特点就在于它是通过一种或几种脚本语言而写成的,脚本语言可以看作是编程语言的简化版,它易于学习和掌握,这给广大动态网站的设计者们提供了相当大的便利.可以

详细讲解ASP脚本循环语句

脚本|循环|语句 如果有人告诉你学习 ASP 不需要任何编程知识,那么他错了:如果我告诉你学习 ASP 必须掌握一门编程语言,那么我错了.ASP 动态服务器页面环境的特点就在于它是通过一种或几种脚本语言而写成的,脚本语言可以看作是编程语言的简化版,它易于学习和掌握,这给广大动态网站的设计者们提供了相当大的便利.可以这么说 : 脚本语言运用的得当与否直接关系到 ASP 应用程序的优与劣.继上一篇我们学习了脚本语言 VBScript 的函数和条件语句后,今天我们继续来看看 VBScript 中的循环

ASP中循环语句的学习总结(适合初学者)

初学|循环|语句 循环语句的作用就是重复执行程序代码,循环可分为三类:一类在条件变为"假"之前重复执行语句,一类在条件变为"真"之前重复执行语句,另一类按照指定的次数重复执行语句.在 VBScript 中可使用下列循环语句: Do...Loop: 当(或直到)条件为"真"时循环. While...Wend: 当条件为"真"时循环. For...Next: 指定循环次数,使用计数器重复运行语句. For Each...Next:

第六篇 ASP脚本循环语句

在本文上两篇中,我们学习了脚本语言 VBScript 的变量.函数.过程和条件语句,本篇将继续给大家介绍 VBScipt 的循环语句,并对脚本语言在 ASP 中的应用加以总结. 如果有人告诉你学习 ASP 不需要任何编程知识,那么他错了:如果我告诉你学习 ASP 必须掌握一门编程语言,那么我错了.ASP 动态服务器页面环境的特点就在于它是通过一种或几种脚本语言而写成的,脚本语言可以看作是编程语言的简化版,它易于学习和掌握,这给广大动态网站的设计者们提供了相当大的便利.可以这么说 : 脚本语言运用

第六课:ASP脚本循环语句

在本文上两篇中,我们学习了脚本语言 VBScript 的变量.函数.过程和条件语句,本篇将继续给大家介绍 VBScipt 的循环语句,并对脚本语言在 ASP 中的应用加以总结. 如果有人告诉你学习 ASP 不需要任何编程知识,那么他错了:如果我告诉你学习 ASP 必须掌握一门编程语言,那么我错了.ASP 动态服务器页面环境的特点就在于它是通过一种或几种脚本语言而写成的,脚本语言可以看作是编程语言的简化版,它易于学习和掌握,这给广大动态网站的设计者们提供了相当大的便利.可以这么说 : 脚本语言运用

ASP脚本循环语句

脚本|循环|语句 作者:书生 在本文上两篇中,我们学习了脚本语言 VBScript 的变量.函数.过程和条件语句,本篇将继续给大家介绍 VBScipt 的循环语句,并对脚本语言在 ASP 中的应用加以总结. 如果有人告诉你学习 ASP 不需要任何编程知识,那么他错了:如果我告诉你学习 ASP 必须掌握一门编程语言,那么我错了.ASP 动态服务器页面环境的特点就在于它是通过一种或几种脚本语言而写成的,脚本语言可以看作是编程语言的简化版,它易于学习和掌握,这给广大动态网站的设计者们提供了相当大的便利

炫酷生动的循环视频背景网页设计实战

  循环(Loop)是现代浏览器中HTML5视频标签下的布尔属性,包括IE9在内的主流浏览器都支持这一属性.它能让一个或者一系列视频短片循环播放.开发者社区中,网页设计 师非常青睐这一功能,并且截至目前影响了许多项目,让网站看起来更加绚丽和精彩. 从作品展示类的网站到移动端的专题页,循环视频 背景的运用范畴非常广泛.网页开发者们将5~10的视频作为背景循环播放,而视频内容通常会展现出某个主题,或者有目的性地展现达成某个目标的过程,呈现企业或者团队的潜在实力.这种展现方式比起传统的网页设计 手法,

操作-设为首页不起作用,收藏本站只有在IE浏览器上有效果,需要亲们的帮助

问题描述 设为首页不起作用,收藏本站只有在IE浏览器上有效果,需要亲们的帮助 下面是我的jsp代码和js代码: <ul> <li><a href=""<%=request.getContextPath()%>/admin/login"">后台管理</a></li> <li><a onclick=""AddFavorite(window.location'检验

ASP基础入门第五篇(ASP脚本循环语句)_应用技巧

继上一篇我们学习了脚本语言 VBScript 的函数和条件语句后,今天我们继续来看看VBScript 中的循环语句. 循环语句的作用就是重复执行程序代码,循环可分为三类:一类在条件变为"假"之前重复执行语句,一类在条件变为"真"之前重复执行语句,另一类按照指定的次数重复执行语句.在VBScript 中可使用下列循环语句: Do...Loop: 当(或直到)条件为"真"时循环. While...Wend: 当条件为"真"时循环.