在recycler-view viewholder中使用相同布局中的不同xml

时间:2018-05-08 09:39:24

标签: android

我在布局文件夹中有多个XML文件,这些文件在一行中有多个点,如何在recycler-view Viewholder中为特定布局中的特定位置/停靠点设置特定布局

请参阅

image

虽然航班不间断但我可以使用它们 this

布局,如果我的航班有两站我可以使用 this布局

1 个答案:

答案 0 :(得分:0)

我认为这可以帮助查看官方DOC here

///如果您没有使用想要在设计中使用两个布局文件的图像那么非常简单!实际上

只需制作一个你喜欢的视图就可以说你有一个线性布局!并且你想根据你的条件加载一个视图,然后就可以这样做

@Override
public void onBindViewHolder(final HomeVuHolder holder, int position) {
    //now all incoming data from the server needed to be


    item = listData.get(position);


    String FlightType = item.getFlightType();

    if (FlightType.equals("1")) {
       View itemInfo1 = getLayoutInflater().inflate(R.layout.item1, holder.flatTypeContainer, true);


    } else if (FlightType.equals("2")) {
        View itemInfo2 = getLayoutInflater().inflate(R.layout.item2, holder.flatTypeContainer, true);

    }
}

在Viewholder类中,您可以执行此操作,因为这是

public class HomeVuHolder extends RecyclerView.ViewHolder {
        LinearLayout flatTypeContainer;
        //...... other views

        public HomeVuHolder(View itemView) {
            super(itemView);
            filghtTypeImageView = (LinearLayout) itemView.findViewById(R.id.flatTypeContainer);

        }

}

这也帮我一次了!在你的情况下,图像有点容易! ^ _ ^

在recyclerView构造函数的bindViewholder方法中,您必须从本地资源或在线任何服务器获取映像!以下是如何从本地应用资源中获取示例的示例!

@Override
public void onBindViewHolder(final HomeVuHolder holder, int position) {
    //now all incoming data from the server needed to be
    //tightly bound here on the recycler View will be here

    item = listData.get(position);

    String FlightType = item.getFlightType();
    if (PostStatuses.equals("1")) {
        holder.filghtTypeImageView.setImageDrawable(context.getResources().getDrawable(R.drawable.ic_worker_green_24dp));
    } else if (PostStatuses.equals("2")) {
        holder.filghtTypeImageView.setImageDrawable(context.getResources().getDrawable(R.drawable.nonStopImage));

    }
}

View holder类就是这样的

public class HomeVuHolder extends RecyclerView.ViewHolder {
        ImageView filghtTypeImageView;
        //...... other views

        public HomeVuHolder(View itemView) {
            super(itemView);
            filghtTypeImageView =  itemView.findViewById(R.id.flightTypeImage);

        }

}

对于来自服务器存储的图像,您只需使用Glide或Picasso作为图像即可加载到imageView onBindViewHolder