Android 分段和非均质循环视图组合
您好,这对我来说似乎是非常复杂的布局,如果有人能帮助我将分区和异构回收视图放在一起,这将是非常好的,对我很有帮助Android 分段和非均质循环视图组合,android,android-recyclerview,heterogeneous,Android,Android Recyclerview,Heterogeneous,您好,这对我来说似乎是非常复杂的布局,如果有人能帮助我将分区和异构回收视图放在一起,这将是非常好的,对我很有帮助 我已经实现了与相同的部分,但是我没有找到我创建的链接。我有密码,也许你明白。我采取了两种观点。一个用于标题,第二个用于说明部分。我甚至为描述部分制作了itemclicklistner 标题的SectionRecycleServiceAdapter public class SectionRecyclerViewAdapter extends RecyclerView.Adapter&
我已经实现了与相同的部分,但是我没有找到我创建的链接。我有密码,也许你明白。我采取了两种观点。一个用于标题,第二个用于说明部分。我甚至为描述部分制作了itemclicklistner 标题的SectionRecycleServiceAdapter
public class SectionRecyclerViewAdapter extends RecyclerView.Adapter<SectionRecyclerViewAdapter.SectionViewHolder> {
class SectionViewHolder extends RecyclerView.ViewHolder {
private TextView header;
private RecyclerView itemRecyclerView;
public SectionViewHolder(View itemView) {
super(itemView);
header= (TextView) itemView.findViewById(R.id.section_label);
itemRecyclerView = (RecyclerView)itemView.findViewById(R.id.item_recycler_view);
}
}
private Context context;
private List<SectionModel> sectionModelArrayList;
private LabelDataSearch labelDataSearch;
public SectionRecyclerViewAdapter(Context applicationContext, List<SectionModel> dataLists, LabelDataSearch labelDataSearchClass) {
this.context = applicationContext;
this.sectionModelArrayList = dataLists;
this.labelDataSearch=labelDataSearchClass;
}
@Override
public SectionViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.section_custom_row_layout, parent, false);
return new SectionViewHolder(view);
}
@Override
public void onBindViewHolder(SectionViewHolder holder, int position) {
final SectionModel sectionModel = sectionModelArrayList.get(position);
if(sectionModel.itemArrayList.size()>0) {
holder.sectionLabel.setVisibility(View.VISIBLE);
holder.sectionLabel.setText(sectionModel.sectionLabel);
}
else {
holder.sectionLabel.setVisibility(View.VISIBLE);
holder.sectionLabel.setText(sectionModel.sectionLabel+"\n No Results");
}
//recycler view for items
holder.itemRecyclerView.setHasFixedSize(true);
holder.itemRecyclerView.setNestedScrollingEnabled(false);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false);
holder.itemRecyclerView.setLayoutManager(linearLayoutManager);
ImageListAdapter adapter = new ImageListAdapter(context, sectionModel.itemArrayList,new ImageListAdapter.OnItemClickListener(){
@Override
public void onItemClick(LabelDataList item, int position) {
labelDataSearch.performAction(item.pageurl);
}
});
holder.itemRecyclerView.setAdapter(adapter);
}
@Override
public int getItemCount() {
return sectionModelArrayList.size();
}
}
公共类部分RecycleServiceAdapter扩展了RecyclerView.Adapter{
类SectionViewHolder扩展了RecyclerView.ViewHolder{
私有文本视图头;
私人RecyclerView项目RecyclerView;
公共部分视图持有者(视图项视图){
超级(项目视图);
header=(TextView)itemView.findViewById(R.id.section\u标签);
itemRecyclerView=(RecyclerView)itemView.findViewById(R.id.item\u recycler\u视图);
}
}
私人语境;
私有列表部分ModelArrayList;
专用LabelDataSearch LabelDataSearch;
公共部分RecycleServiceAdapter(上下文应用程序上下文、列表数据列表、LabelDataSearch labelDataSearchClass){
this.context=applicationContext;
this.sectionModelArrayList=数据列表;
this.labelDataSearch=labelDataSearchClass;
}
@凌驾
公共部分ViewHolder onCreateViewHolder(视图组父级,int-viewType){
View View=LayoutInflater.from(parent.getContext()).flate(R.layout.section\u custom\u row\u布局,parent,false);
返回新的截面视图保持架(视图);
}
@凌驾
BindViewHolder上的公共无效(截面ViewHolder,内部位置){
final SectionModel SectionModel=sectionModelArrayList.get(位置);
if(sectionModel.itemArrayList.size()>0){
支架.sectionLabel.setVisibility(视图.可见);
holder.sectionLabel.setText(sectionModel.sectionLabel);
}
否则{
支架.sectionLabel.setVisibility(视图.可见);
holder.sectionLabel.setText(sectionModel.sectionLabel+“\n无结果”);
}
//项目的回收器视图
holder.itemRecyclerView.setHasFixedSize(true);
holder.itemRecyclerView.setNestedScrollingEnabled(false);
LinearLayoutManager LinearLayoutManager=新的LinearLayoutManager(上下文,LinearLayoutManager.VERTICAL,false);
holder.itemRecyclerView.setLayoutManager(linearLayoutManager);
ImageListAdapter=new ImageListAdapter(上下文,sectionModel.itemArrayList,new ImageListAdapter.OnItemClickListener(){
@凌驾
public void onItemClick(标签目录项,内部位置){
labelDataSearch.performAction(item.pageurl);
}
});
holder.itemRecyclerView.setAdapter(适配器);
}
@凌驾
public int getItemCount(){
返回sectionModelArrayList.size();
}
}
用于说明的ImageListAdapter
public class ImageListAdapter extends RecyclerView.Adapter<ImageListAdapter.MyViewHolder> {
List<LabelDataList> dataLists;
private OnItemClickListener listener;
private Context ctx;
public static int sCorner = 15;
public static int sMargin = 2;
public static int sBorder = 10;
public static String sColor = "#7D9067";
public ImageListAdapter(Context context, ArrayList<LabelDataList> itemArrayList, OnItemClickListener onItemClickListener) {
this.dataLists = itemArrayList;
this.listener = onItemClickListener;
this.ctx = context;
}
public interface OnItemClickListener {
void onItemClick(LabelDataList item, int position);
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_lebel, parent, false);
return new MyViewHolder(v);
}
@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
holder.bind(dataLists.get(position), listener, position);
final LabelDataList labelData = dataLists.get(position);
// Your views include check box and text view or radio buttons
}
@Override
public int getItemCount() {
return dataLists.size();
}
/**
* View holder class
*/
public class MyViewHolder extends RecyclerView.ViewHolder {
private final TextView tvCategory;
public TextView tvLabel;
public RelativeLayout relTopLayout;
public ImageView imgProduct;
public MyViewHolder(View child) {
super(child);
tvLabel = (TextView) child.findViewById(R.id.tv_label);
tvCategory = (TextView) child.findViewById(R.id.tv_category);
imgProduct = (ImageView) child.findViewById(R.id.img_product);
// relTopLayout = (RelativeLayout) child.findViewById(R.id.rel_top_layout);
}
public void bind(final LabelDataList item, final OnItemClickListener listener, final int position) {
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.onItemClick(item, position);
}
});
}
}
}
公共类ImageListAdapter扩展了RecyclerView.Adapter{
列出数据清单;
私人监听;
私有上下文ctx;
公共静态int sCorner=15;
公共静态int sMargin=2;
公共静态int sBorder=10;
公共静态字符串sColor=“#7D9067”;
公共ImageListAdapter(上下文上下文、ArrayList项ArrayList、OnItemClickListener和OnItemClickListener){
this.dataLists=itemArrayList;
this.listener=mclickListener;
this.ctx=上下文;
}
公共接口侦听器{
void onItemClick(标签目录项,int位置);
}
@凌驾
公共MyViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图v=LayoutInflater.from(parent.getContext()).flate(R.layout.row\u lebel,parent,false);
返回新的MyViewHolder(v);
}
@凌驾
公共无效onBindViewHolder(最终MyViewHolder,最终int位置){
holder.bind(datalist.get(position)、listener、position);
最终LabelDataList labelData=DataList.get(位置);
//视图包括复选框和文本视图或单选按钮
}
@凌驾
public int getItemCount(){
返回dataLists.size();
}
/**
*视图持有者类
*/
公共类MyViewHolder扩展了RecyclerView.ViewHolder{
私有最终文本视图类别;
公共文本视图标签;
公共相对性布局;
公共图像查看imgProduct;
公共MyViewHolder(视图子对象){
超级(儿童);
tvLabel=(TextView)child.findViewById(R.id.tv_标签);
tvCategory=(TextView)child.findViewById(R.id.tv_category);
imgProduct=(ImageView)child.findViewById(R.id.img_产品);
//relTopLayout=(RelativeLayout)child.findViewById(R.id.rel\u top\u布局);
}
公共void绑定(最终LabelDataList项、最终OnItemClickListener侦听器、最终int位置){
itemView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
listener.onItemClick(项目、位置);
}
});
}
}
}
希望对您有所帮助。我建议您使用图书馆。我听说环氧树脂很好。我个人使用这个,但最终它取决于您的使用情况可能的副本