1
我想在一个回收站视图中充气两种不同的布局。这是我的适配器代码。Android在回收站视图适配器中充气两种布局
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.ArrayList;
public class HomeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private ArrayList<myHome> homeData;
private static final int TYPE_FEATURED = 1;
private static final int TYPE_OTHER = 2;
public HomeAdapter(ArrayList<myHome> myDataset) {
this.homeData = myDataset;
}
public class FeaturedViewHolder extends RecyclerView.ViewHolder {
public TextView title;
public TextView author;
public FeaturedViewHolder(View itemView) {
super(itemView);
this.title = (TextView)itemView.findViewById(R.id.title);
this.author = (TextView)itemView.findViewById(R.id.recvid_auth);
}
}
public class otherVidViewHolder extends RecyclerView.ViewHolder {
public TextView rec_title;
public TextView rec_author;
public otherVidViewHolder(View itemView) {
super(itemView);
this.rec_title = (TextView)itemView.findViewById(R.id.recvid_title);
this.rec_author = (TextView)itemView.findViewById(R.id.description);
}
}
@Override
public int getItemViewType(int position) {
// Just as an example, return 0 or 2 depending on position
// Note that unlike in ListView adapters, types don't have to be contiguous
return (position == 0? TYPE_FEATURED : TYPE_OTHER);
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
RecyclerView.ViewHolder viewHolder;
LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
switch (viewType) {
case TYPE_FEATURED :
View v1 = inflater.inflate(R.layout.layout_home_view, viewGroup, false);
viewHolder = new FeaturedViewHolder(v1);
//return new FeaturedViewHolder(LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.layout_home_view, viewGroup, false));
break;
case TYPE_OTHER :
View v2 = inflater.inflate(R.layout.layout_home_other, viewGroup, false);
viewHolder = new otherVidViewHolder(v2);
//return new otherVidViewHolder(LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.layout_home_other, viewGroup, false));
break;
default: return null;
}
return viewHolder;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) {
if(viewHolder.getItemViewType() == TYPE_FEATURED) {
FeaturedViewHolder featuredViewHolder = (FeaturedViewHolder) viewHolder;
featuredViewHolder.title.setText(homeData.get(i).getTitle());
featuredViewHolder.author.setText(homeData.get(i).getUser());
} else {
otherVidViewHolder otherViewHolder = (otherVidViewHolder) viewHolder;
otherViewHolder.rec_title.setText(homeData.get(i).getViews());
}
}
@Override
public int getItemCount() {
return homeData.size();
}
该代码运行正常,但它只显示一个布局,其他布局是layout_home_other未显示。可以显示两种布局吗?这两个布局也有不同的数据显示。我将如何重新调整getItemCount()中的第二个布局的大小?感谢你的帮助,我会得到。
这里是数据集。 公共类MYHOME {
String title;
String user;
String views;
String url;
String duration;
public myHome(String title, String user, String views, String url, String duration) {
this.title = title;
this.user = user;
this.views = views;
this.url = url;
this.duration = duration;
}
public String getTitle() {
return title;
}
public String getUser() {
return user;
}
public String getViews() {
return views;
}
public String getUrl() {
return url;
}
public String getDuration() {
return duration;
}
}
尝试增加根布局为您的布局,那么它充气单布局 –
@akhilRao我在哪里增加吗?在onCreateViewHolder?以及如何添加它?即时通讯对不起,我在android编程新手。 – kathleen55
你是否试图在同一时间膨胀两种不同的布局?或者你是否试图根据数据情况膨胀两种不同的布局(一次一个)? – Silmarilos