首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将Hashmap<String、List<Items>>扩展到回收视图中

我希望键字符串必须充当头部,并且列表必须在RecyclerView中的映射键下膨胀。

谢谢你的帮助

代码语言:javascript
运行
AI代码解释
复制
public class Adapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{

private WeakHashMap<String, List<VideoItem>> mData = new WeakHashMap<>();
private ArrayList<String> mKeys;
ArrayList<WeakHashMap<String,List<VideoItem>>> hashMapArrayList;

public Adapter(WeakHashMap<String, List<VideoItem>> mData, ArrayList<WeakHashMap<String,List<VideoItem>>> hashMapArrayList) {
    this.mData = mData;
    this.hashMapArrayList=hashMapArrayList;
    mKeys = new ArrayList<String>(mData.keySet());
}

public String getKey(int position)
{
    return (String) mKeys.get(position);
}


@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.player_item, parent, false);
    MyViewHolder holder=new MyViewHolder(v);
    return holder;
}

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    String key = getKey(position);
    WeakHashMap<String, List<VideoItem>> value = hashMapArrayList.get(position);
    MyViewHolder holder1=(MyViewHolder)holder;
    holder1.header.setText(key);
    holder1.value.setText(value.get( key ).get( position ).getDuration());
    Log.v( "KEY",key );
    Log.v( "VALUE", String.valueOf( value ) );
}

@Override
public int getItemCount() {
    return (null != hashMapArrayList ? hashMapArrayList.size() : 0);

}

//    public  ArrayList<WeakHashMap<String,List<VideoItem>>> getItem(int position) {
//        return hashMapArrayList.get(mKeys.get(position));
//    }

@Override
public long getItemId(int position) {
    return position;
}
class MyViewHolder extends RecyclerView.ViewHolder{
    TextView header ;
    TextView value;
    public MyViewHolder(View itemView) {
        super(itemView);
        header= (TextView) itemView.findViewById(R.id.header);
        value= (TextView) itemView.findViewById(R.id.task_name);
    }
}

}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-04 18:14:33

您可以使用库SectionedRecyclerViewAdapter轻松实现这一点。您可以将项目分组为多个部分,并为每个部分添加标题:

代码语言:javascript
运行
AI代码解释
复制
class MySection extends StatelessSection {

    String title;
    List<VideoItem> list;

    public MySection(String title, List<VideoItem> list) {
        // call constructor with layout resources for this Section header and items 
        super(R.layout.section_header, R.layout.section_item);

        this.title = title;
        this.list = list;
    }

    @Override
    public int getContentItemsTotal() {
        return list.size(); // number of items of this section
    }

    @Override
    public RecyclerView.ViewHolder getItemViewHolder(View view) {
        // return a custom instance of ViewHolder for the items of this section
        return new MyItemViewHolder(view);
    }

    @Override
    public void onBindItemViewHolder(RecyclerView.ViewHolder holder, int position) {
        MyItemViewHolder itemHolder = (MyItemViewHolder) holder;

        // bind your view here
        itemHolder.tvItem.setText(list.get(position).getName());
    }

    @Override
    public RecyclerView.ViewHolder getHeaderViewHolder(View view) {
        return new SimpleHeaderViewHolder(view);
    }

    @Override
    public void onBindHeaderViewHolder(RecyclerView.ViewHolder holder) {
        MyHeaderViewHolder headerHolder = (MyHeaderViewHolder) holder;

        // bind your header view here
        headerHolder.tvItem.setText(title);
    }
}

然后使用您的部分设置RecyclerView:

代码语言:javascript
运行
AI代码解释
复制
// Create an instance of SectionedRecyclerViewAdapter 
SectionedRecyclerViewAdapter sectionAdapter = new SectionedRecyclerViewAdapter();

// Create your sections with the list of data from your HashMap
for(Map.Entry<String, List<VideoItem>> entry : mData.entrySet()) {
    MySection section = new MySection(entry.getKey(), entry.getValue());
    // add your section to the adapter
    sectionAdapter.addSection(section);

}

// Set up your RecyclerView with the SectionedRecyclerViewAdapter
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
recyclerView.setAdapter(sectionAdapter);

如果你不能使用第三方库,你可以看看它是如何在here中实现的。

票数 7
EN

Stack Overflow用户

发布于 2016-04-01 08:24:57

尝尝这个

代码语言:javascript
运行
AI代码解释
复制
Map<String, List<String>> maplist = new HashMap<String, List<String>>();
List<String> arraylist = new ArrayList<String>();
arraylist.add("Sample text"); // Add more strings...
maplist.put("key",arraylist); // Add more lists...
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36351417

复制
相关文章
String转JsonArray转List[通俗易懂]
场景是查看学生详情时需要展示学生学历信息 比如某某年 哪个学校毕业 奖惩情况等等
全栈程序员站长
2022/08/31
3.3K0
python string与list互转
因为python的read和write方法的操作对象都是string。而操作二进制的时候会把string转换成list进行解析,解析后重新写入文件的时候,还得转换成string。 >>> import string >>> str = 'abcde' >>> list = list(str) >>> list ['a', 'b', 'c', 'd', 'e'] >>> str 'abcde' >>> str_convert = ''.join(list) >>> str_convert 'abcde' >>>
py3study
2020/01/06
5070
fastjson List String JSONArray 转换
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/151458.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/31
9660
fastjson List String JSONArray 转换
List的String类型集合转换为String小结
项目中可能会遇见需要将 List 内容拼接成以逗号分隔的字符串的形式,现对实现方式做个小结
在水一方
2022/06/14
1.2K0
Java 数组转list_string数组转list
仔细观察可以发现asList接受的参数是一个泛型的变长参数,而基本数据类型是无法泛型化的,如下所示:
全栈程序员站长
2022/09/25
2.7K0
Java 数组转list_string数组转list
自定义list To HashMap工具类
我们在使用JDK自带的Collectors.toMap时,可能会遇到如下问题(什么?你不知道toMap干嘛的?戳我了解):
阿超
2022/08/16
2950
如何将Array转换为List?
可以使用 Arrays.asList() 方法, 该方法接受一个数组作为输入,并返回一个列表作为输出。
程序你好
2018/07/23
1.5K0
JsonArray转List<String>「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/152266.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/10
3.7K0
【python 3.6】如何将list存入txt后,再读出list
今天遇到一个需求,就是将一个list文件读取后,存入一个txt配置文件。存入时,发现list文件无法直接存入,必须转为str模式。
BH8ANK
2021/01/28
6220
Java 如何将 List 转换为 MAP
上面的代码将会把 Id 作为 Key,然后生成的 Map 是以 id 为 Key,Animal 为Value 的 Map。
HoneyMoose
2022/10/12
2.1K0
Java 如何将 List 转换为 MAP
java如何将String转换为enum
已知枚举对应的String值,希望得到对应的枚举值。例如,已知"A",希望得到对应的枚举——Blah.A,应该怎么做? Enum.valueOf()是否能实现以上目的,如果是,那我如何使用?
硬核编程
2020/07/23
4.1K0
Rustlings练习-vec、String、hashmap、error_handling
用直接声明是一个[i32,n]的类型,用vec!()宏可以声明一个Vec<T>类型的变量.
用户7267083
2022/12/08
8440
java如何将String转换为Int
Short.valueOf/parseShort, Long.valueOf/parseLong等也是有类似差别。
硬核编程
2020/07/23
1.7K0
list去除相同String、对象元素
一、当相同元素为String时 方法一 /** * List去重 */ private List<String> removeDuplicate(List<String> list) { LinkedHashSet<String> set = new LinkedHashSet<String>(list.size()); set.addAll(list); list.clear(); list.addAll(
崔笑颜
2020/06/08
8250
fastjson -String转JSONArray,JSONArray转List[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/151432.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/31
2.1K0
如何将路径字符串数组(string[])转成树结构(treeNode[])?
这里说明一下,array2Tree()方法中的clientLabel参数其实可要可不要,也可继续扩展,根据自身业务而定。
唐志远
2023/08/01
3110
如何将路径字符串数组(string[])转成树结构(treeNode[])?
如何将路径字符串数组(string[])转成树结构(treeNode[])?
这里说明一下,array2Tree()方法中的clientLabel参数其实可要可不要,也可继续扩展,根据自身业务而定。
唐志远
2023/07/24
2920
如何将路径字符串数组(string[])转成树结构(treeNode[])?
Java 中如何将 String 转换为 Long
根据官方的说法为:如果输入的字符串为 null 或者 0 的话,将会有下面的返回和输出。
HoneyMoose
2022/01/06
2.9K0
Java 中如何将 String 转换为 Long
java中如何将数组转换为List
如何将其转换为ArrayList <Element> arraylist = ???
硬核编程
2020/07/23
3.4K0
怎么使用Java 8 Stream将List(Object)转成List(Map(String, Object))?
问题描述:有一个用户列表List<User>,须将每个User部分字段提取出来,重新放入一个Map中,然后将生成的Map放入List中。
全栈程序员站长
2022/10/02
4.4K0

相似问题

如何从意图中传递HashMap<String、List<String>>

30

HashMap<String,List<String>> to HashMap<Object,List<String>>使用流

14

使用HashMap<String、List<String>>创建HashMap<String、List<String>>时出错

12

如何在回收器视图中显示ArrayList<Hashmap<String、String>>

11

Javapoet - TypeName - HashMap<String,HashMap<String,List<String>>>生成?

31
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档