Recyclerview中的LinearLayout,另一个RecyclerView中的LinearLayout

时间:2018-07-17 10:14:56

标签: java android android-studio listview android-recyclerview

早上好,我在尝试将Recyclerview与另一个Recyclerview链接时遇到问题,我的意思是在我的活动中,第一个recyclerview在我的活动中,而该活动又为第二个Recyclerview(在LinearLayout中)填充,因为一旦该recyclerview被具有ImageView和TextView的另一个布局填充,问题是由于该应用程序停止,我不能使用两个recycler视图,但是如果我以相同的方式分别使用该布局,则我知道如果我解释一下,我有3种布局:

问题在于,由于该应用程序停止运行,因此我无法同时使用这两个回收站视图,但是如果我分别使用布局(如果它们以相同的方式工作),我不知道自己是否解释了,我有3种布局,一种在包含recyclerview的活动中,包含第二个recyclerview和texview的元素的容器,最后是包含imageView和texView的layout portraitLayout,如果我仅使用活动的布局,则呈现第二个很好,但是没有任何图像,如果我删除活动的布局,而将第二个保留为第三个,则将使用各自的图像进行渲染。

enter image description here

我有2个适配器:

AdapterPortrait:

`public class Adapter_Portrait extends RecyclerView.Adapter<Adapter_Portrait.ViewHolder> {
    private List<Portrait> portraits;
    private int layout;
    private OnItemClickListener listener;
    private Context context;


    public Adapter_Portrait(List<Portrait> portraits, int layout, OnItemClickListener listener) {
        this.portraits = portraits;
        this.layout = layout;
        this.listener = listener;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v= LayoutInflater.from(parent.getContext()).inflate(this.layout,parent,false);
        ViewHolder vh=new ViewHolder(v);
        context=parent.getContext();
        return vh;
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        holder.bind(portraits.get(position),this.listener);
    }

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

    public class ViewHolder extends RecyclerView.ViewHolder{
        ImageView imageView;
        TextView textView;

        public ViewHolder(View itemView) {
            super(itemView);
            this.imageView = itemView.findViewById(R.id.imagePortrait);
            this.textView = itemView.findViewById(R.id.textNamePortrait);

        }


        public void bind(final Portrait portrait, final OnItemClickListener listener){
            this.textView.setText(portrait.getName_portrait());
            Picasso.with(context).load(portrait.getImagePortrait()).fit().into(imageView);

            itemView.setOnClickListener(new View.OnClickListener(){

                @Override
                public void onClick(View view) {
                    listener.onItemClick(portrait, getAdapterPosition());
                }
            });

        }
    }

    public interface OnItemClickListener{
        void onItemClick(Portrait portrait, int position);
    }
}`

AdapterList_Pieces:

`public class AdapterList_Pieces extends 
 RecyclerView.Adapter<AdapterList_Pieces.ViewHolder> {

    private List<Artist> artists;
    private int layout;
    private OnItemClickListener listener;
    private Context context;

    public AdapterList_Pieces(List<Artist> artists, int layout, OnItemClickListener listener) {
        this.artists = artists;
        this.layout = layout;
        this.listener = listener;
    }

    public class ViewHolder extends RecyclerView.ViewHolder{
        RecyclerView recyclerView;
        TextView textView;

        public ViewHolder(View itemView) {
            super(itemView);
            this.recyclerView = itemView.findViewById(R.id.RecyclerViewPieces);
            this.textView = itemView.findViewById(R.id.textViewPieces);
        }


        public void bind(final Artist artist, final OnItemClickListener listener){
            this.textView.setText(artist.getName_artist());


            itemView.setOnClickListener(new View.OnClickListener(){

                @Override
                public void onClick(View view) {
                    listener.onItemClick(artist, getAdapterPosition());
                }
            });

        }
    }


    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v= LayoutInflater.from(parent.getContext()).inflate(this.layout,parent,false);
        ViewHolder vh=new ViewHolder(v);
        context=parent.getContext();
        return vh;
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        holder.bind(artists.get(position),this.listener);

    }

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

    public interface OnItemClickListener{
        void onItemClick(Artist artist, int position);
    }

}`

我的活动是:

public class PiecesActivity extends AppCompatActivity {
    List<Artist> artists;
    List<Portrait> portraits;
    RecyclerView recyclerView;
    RecyclerView recyclerViewPiece;
    RecyclerView.Adapter rAdapter;
    RecyclerView.LayoutManager layoutManagerPiece;
    RecyclerView.Adapter AdapterPiece;
    RecyclerView.LayoutManager layoutManager;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.portraitcontenetorslayout);

        recyclerView= findViewById(R.id.recyclerViewListPieces);
        recyclerViewPiece= findViewById(R.id.RecyclerViewPieces);
        artists= ConsultingInformation.getArtist();
        portraits= ConsultingInformation.getPortrait();
        layoutManager = new LinearLayoutManager(this);
        layoutManagerPiece =   new LinearLayoutManager(this);

        rAdapter= new Adapter_Portrait(portraits,R.layout.portraitlayout, new Adapter_Portrait.OnItemClickListener(){

            @Override
            public void onItemClick(Portrait portrait, int position) {
                Toast.makeText(PiecesActivity.this, "This piece is "+ portraits.get(position).getName_portrait(), Toast.LENGTH_LONG).show();
            }
        });

        recyclerViewPiece.setHasFixedSize(true);
        recyclerViewPiece.setItemAnimator(new DefaultItemAnimator());
        recyclerViewPiece.setLayoutManager(layoutManagerPiece);
        recyclerViewPiece.setAdapter(rAdapter);

        AdapterPiece= new AdapterList_Pieces(artists,R.layout.portraitcontenetorslayout, new AdapterList_Pieces.OnItemClickListener(){
            @Override
                public void onItemClick(Artist artist, int positionArt) {
                    Toast.makeText(PiecesActivity.this, "This list of pieces is "+ artists.get(positionArt).getName_artist(), Toast.LENGTH_LONG).show();
                }
        });

        recyclerView.setHasFixedSize(true);
        recyclerView.setItemAnimator(new DefaultItemAnimator());
        recyclerView.setLayoutManager(layoutManager);
        recyclerView.setAdapter(AdapterPiece);

    }



}`

我已经读过,不可能在另一个列表中放置一个可下载列表,但是对于我的情况,我没有一个不稳定的方法,即两个对象列表在另一个列表中。

我的布局以防万一。

PortraitLayout:

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

     <ImageView
        android:id="@+id/imagePortrait"
        android:layout_width="78dp"
        android:layout_height="63dp"

        android:layout_marginLeft="25dp"
        android:textAlignment="center"
        android:contentDescription="TODO"
        android:layout_marginStart="25dp" />

    <TextView
        android:id="@+id/textNamePortrait"
        android:layout_width="225dp"
        android:layout_height="30dp"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:text="TextView"
        android:layout_marginStart="10dp" />

    </LinearLayout>

portraitcontenetorlayout:

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

    <TextView
        android:id="@+id/textViewPieces"
        android:layout_width="match_parent"
        android:layout_height="35dp"
        android:background="#BCBCBC"
        android:paddingLeft="7dp"
        android:text=" TextView"
        android:gravity="center_vertical" />

    <android.support.v7.widget.RecyclerView
        android:id="@+id/RecyclerViewPieces"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

活动作品:

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

    <TextView
        android:id="@+id/textView3"
        android:layout_width="match_parent"
        android:gravity="center"
        android:layout_height="30dp"
        android:text="Obras" />

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerViewListPieces"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

0 个答案:

没有答案