使用不同的数据为几个相同的布局充气

时间:2012-09-18 14:26:33

标签: android layout-inflater

如何使用不同的文本和图像为几个相同的布局充气?我尝试过使用这段代码

    for (final Tour t : info.tours) {
        final LinearLayout list = (LinearLayout) findViewById(R.id.tours_list);
        Log.d(Const.LOG_TAG, "Add child view to tours_list");
        final LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View child = inflater.inflate(R.layout.tour_item_for_guide_info,
                list, true);
        final ImageView tourImage = (ImageView) findViewById(R.id.tour_image);
        final String tourImgUrl = Const.HOST + t.image;
        imageLoader.DisplayImage(tourImgUrl, tourImage);
        TextView tourText = (TextView) findViewById(R.id.text);
        tourText.setText(t.name);
    }

但是在第一个充气布局中设置了文本和图像,替换了之前的文本和图像。我理解它发生了什么,因为布局具有相同的ID。我能解决吗?我知道ListView和适配器,但我想知道它是否可以在没有它们的情况下完成。

1 个答案:

答案 0 :(得分:2)

我认为ImageView和TextView - tourImagetourText - 是R.layout.tour_item_for_guide_info的元素。

如果是这样,那么当您引用它时,您应该使用child视图来获取它们。

换句话说,而不是:

ImageView tourImage = (ImageView) findViewById(R.id.tour_image);
TextView tourText = (TextView) findViewById(R.id.text);

你应该:

ImageView tourImage = (ImageView)child.findViewById(R.id.tour_image);
TextView tourText = (TextView)child.findViewById(R.id.text);

不确定这是否能解决您的问题,但它看起来像是一个错误。