早上好,我在尝试将Recyclerview与另一个Recyclerview链接时遇到问题,我的意思是在我的活动中,第一个recyclerview在我的活动中,而该活动又为第二个Recyclerview(在LinearLayout中)填充,因为一旦该recyclerview被具有ImageView和TextView的另一个布局填充,问题是由于该应用程序停止,我不能使用两个recycler视图,但是如果我以相同的方式分别使用该布局,则我知道如果我解释一下,我有3种布局:
问题在于,由于该应用程序停止运行,因此我无法同时使用这两个回收站视图,但是如果我分别使用布局(如果它们以相同的方式工作),我不知道自己是否解释了,我有3种布局,一种在包含recyclerview的活动中,包含第二个recyclerview和texview的元素的容器,最后是包含imageView和texView的layout portraitLayout,如果我仅使用活动的布局,则呈现第二个很好,但是没有任何图像,如果我删除活动的布局,而将第二个保留为第三个,则将使用各自的图像进行渲染。
我有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>