以编程方式将布局加载到另一个布局

use*_*746 0 android android-layout android-xml android-activity android-recyclerview

我有一个布局,images.xml我想加载/膨胀到另一个布局,main.xml.

这是主要布局,main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

    // Load into placeholder
    <LinearLayout
        android:id="@+id/placeholder"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        />

    <TextView
        android:id="@+id/desc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

这里是images.xml我要加载到上面布局的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/image"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

我使用RecyclerView适配器将数据加载到主布局中,这是我想要加载/扩展子布局的地方:

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {

    private static Context context;
    private List<Message> mDataset;

    public RecyclerAdapter(Context context, List<Message> myDataset) {
        this.context = context;
        this.mDataset = myDataset;
    }

    public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnCreateContextMenuListener, View.OnClickListener {
        public TextView title;
        public LinearLayout placeholder;

        public ViewHolder(View view) {
            super(view);
            view.setOnCreateContextMenuListener(this);

            title = (TextView) view.findViewById(R.id.title);
            placeholder = (LinearLayout) view.findViewById(R.id.placeholder);
        }
    }

    @Override
    public RecyclerAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.message_layout, parent, false);
        ViewHolder vh = new ViewHolder((LinearLayout) view);

        return vh;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        Message item = mDataset.get(position);

        holder.title.setText(item.getTitle());

        int numImages = item.getImages().size();

        if (numImages > 0) {
            View test = LayoutInflater.from(holder.placeholder.getContext()).inflate(R.layout.images, holder.placeholder, false);
            ImageView image = (ImageView) test.findViewById(R.id.image);
            Glide.with(context)
                .load("http://www.website.com/test.png")
                .fitCenter()
                .into(image);
            holder.placeholder.addView(test);
        }
    }

    @Override
    public int getItemCount() {
        return mDataset.size();
    }

}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

ρяσ*_*я K 5

我有一个布局,images.xml,我想加载/膨胀到另一个布局,main.xml

这样做:

1.首先增加orientationLinearLayoutmain.xmlvertical:

android:orientation="vertical"
Run Code Online (Sandbox Code Playgroud)

2.使用holder.titleholderonBindViewHolder得到中要添加父布局 images.xml:

  LinearLayout linearLayout=(LinearLayout)holder.title.getParent();
  View view = LayoutInflater.from(parent.getContext()).inflate(
                                             R.layout.images, parent, false);
    linearLayout.addView(view);
Run Code Online (Sandbox Code Playgroud)