在listview自定义行中创建水平列表视图时遇到问题。问题是,第一行列表视图有3个项目,即A,B C.和第二行列表视图,在水平列表视图中有6个项目,即A,B,C,D,E,F。
我无法摆脱这个问题。
以下是代码段
创建3个arraylist
List<SectionArea> sectionAreas;
List<BannerArea> bannerAreas;
List<Wrapper> wrappers;
从服务器
获取json数据的代码 wrappers = new ArrayList<Wrapper>();
// Code to get all wrapper in Icons list
JSONArray wrapperArray = object.getJSONArray("wrapper");
for (int i = 0; i < wrapperArray.length(); i++) {
sectionAreas = new ArrayList<SectionArea>();
bannerAreas = new ArrayList<BannerArea>();
JSONObject wrapperObj = wrapperArray.getJSONObject(i);
String section_image = wrapperObj.getString("section_image");
String category_id = wrapperObj.getString("category_id");
String category_name = wrapperObj.getString("category_name");
String banner_title = wrapperObj.getString("banner_title");
JSONArray sectioArray = wrapperObj.getJSONArray("sectionarea");
for (int j = 0; j < sectioArray.length(); j++) {
JSONObject jsonObject = sectioArray.getJSONObject(j);
String product_id = jsonObject.getString("product_id");
String sec_category_id = jsonObject.getString("category_id");
String name = jsonObject.getString("name");
String image = jsonObject.getString("image");
String price = jsonObject.getString("price");
String special = jsonObject.getString("special");
String discount = jsonObject.getString("discount");
SectionArea sectionArea = new SectionArea(product_id, sec_category_id, name, image, price, special, discount);
sectionAreas.add(sectionArea);
}
JSONArray bannerAreaArray = wrapperObj.getJSONArray("bannerarea");
for (int k = 0; k < bannerAreaArray.length(); k++) {
JSONObject jsonObject = bannerAreaArray.getJSONObject(k);
String image = jsonObject.getString("image");
String tag = jsonObject.getString("tag");
String id = jsonObject.getString("id");
BannerArea bannerArea = new BannerArea(image, tag, id);
bannerAreas.add(bannerArea);
}
Wrapper wrapper = new Wrapper(section_image, category_id, category_name, banner_title,
sectionAreas, bannerAreas);
wrappers.add(wrapper);
}
}
添加适配器
list.setAdapter(new HomePageAdapter(context, wrappers));
用于设置水平列表视图的适配器代码
sectionAreas = wrappers.get(position).getSectionAreas();
viewHolder.item_list.setAdapter(new HorizontaListAdapter(mContext, sectionAreas));
请帮忙。提前致谢
答案 0 :(得分:1)
您必须将LinearlayoutManager
与RecyclerView
一起使用。
LinearLayoutManager layoutManager= new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
答案 1 :(得分:0)
将HomePageAdapter
类
viewHolder.item_list.setAdapter(new HorizontaListAdapter(mContext, sectionAreas));
使用
viewHolder.item_list.setAdapter(new HorizontaListAdapter(mContext, wrappers.get(position).getSectionAreas()));
同时从您的代码MainActivity
sectionAreas = new ArrayList<SectionArea>();
bannerAreas = new ArrayList<BannerArea>();
通过
ArrayList<SectionArea> sectionAreas = new ArrayList<SectionArea>();
ArrayList<BannerArea> bannerAreas = new ArrayList<BannerArea>();
删除公共变量
List<SectionArea> sectionAreas;
List<BannerArea> bannerAreas;
注意:
我检查了您的代码,发现您已使用HorizontalView
水平显示项目。
所以只是一个建议,您可以使用Android默认水平RecyclerView
,而不是使用任何自定义类。哪个更可靠。
使用EX:
RecyclerView recyclerTeams= (RecyclerView) mainView.findViewById(R.id.recyclerTeams);
LinearLayoutManager llManager = new LinearLayoutManager(getContext(),LinearLayoutManager.HORIZONTAL,false);
recyclerTeams.setLayoutManager(llManager);