java - 如何将 Hashmap 值存储在 ListView 中 LongclickListener 的变量中?

标签 java android listview hashmap

我是 Android 开发新手。
我希望当用户长按列表中的项目时,其值会存储在变量中,以便我可以进一步使用该变量来运行其他函数。

public class Second extends Fragment {

    public Second() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_second, container, false);
    }


    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        ListView misc=(ListView) getActivity().findViewById(R.id.lv_misc);

        HashMap<String,String> itemmisc = new HashMap<>();
        itemmisc.put("Aloo Kathi Roll","Calories: 460");
        itemmisc.put("Paneer Roll","Calories: 197");
        itemmisc.put("Egg Roll","Calories: 196");
        itemmisc.put("Paneer Egg Roll","Calories: 650");
        itemmisc.put("Makhani Roll","Calories: 420");
        itemmisc.put("Double Egg Roll","Calories: 315");
        itemmisc.put("Chocolate Donut","Calories: 340");
        itemmisc.put("Chole Bhature","Calories: 427");
        itemmisc.put("Aloo Parantha","Calories: 177");
        itemmisc.put("Paneer Parantha","Calories: 234");
        itemmisc.put("Plain Maggi","Calories: 188");
        itemmisc.put("Cheese Maggi","Calories: 322");
        itemmisc.put("Hot Chocolate","Calories: 77");
        itemmisc.put("Vada Pav","Calories: 197");
        itemmisc.put("Veg Hot Dog","Calories: 143");
        itemmisc.put("Cheese Fries","Calories: 560");
        itemmisc.put("Mayo Fries","Calories: 507");
        itemmisc.put("White Pasta","Calories: 200");
        itemmisc.put("Red Pasta","Calories: 250");
        itemmisc.put("Strawberry Shake","Calories: 282");
        itemmisc.put("Chocolate Shake","Calories: 590");
        itemmisc.put("Aloo Burger","Calories: 367");
        itemmisc.put("Cheese Burger","Calories: 303");

        List<HashMap<String,String>> listItemmisc = new ArrayList<>();
        SimpleAdapter adapter3 = new SimpleAdapter(getActivity(),listItemmisc,R.layout.list_items_misc, new String[]{"First Line","Second Line"},
                                                   new int[]{R.id.text1,R.id.text2});
        Iterator it = itemmisc.entrySet().iterator();
        while(it.hasNext()){
            HashMap<String,String> resultMap = new HashMap<>();
            Map.Entry pair = (Map.Entry) it.next();
            resultMap.put("First Line",pair.getKey().toString());a
            resultMap.put("Second Line",pair.getValue().toString());
            listItemmisc.add(resultMap);
        }
             misc.setAdapter(adapter3);

    }
}

这是一个java文件,我在其中使用主线和子线的 HashMap 创建了一个 ListView 。我想从这个列表中检索长按项目的值。 longpressclicklistener 使用位置,但我不知道如何从该 HashMap 中接收位置并仅在其中存储主线。

最佳答案

1- 使用自定义适配器扩展 BaseAdapter(例如 xxx) 1-1 在您的适配器中, map 对象必须可访问(例如通过发送到自定义适配器) 2-在您的自定义适配器中重写 getView() 的覆盖方法 3- 在 getView 中,位置在您的访问中。通过获取 listView 的元素并借助“position”参数,您可以获得所选列表项的值项。然后将所选值与 map 的键进行比较。 4-当Map键项与提取的选定值项(从列表中)相等时,从Map对象中获取适应键的值。此时您拥有选定列表项的后面值并且可以执行您的任务。所有这些任务都是在自定义适配器的 getView 方法中完成的。

自定义适配器承包商示例:

public SimpleIndividualAdapter(Context iApplicationContext, Collection<SimpleIndividual> iData ,param2,param3,... ){} 

根据您的需要,iData 可能是 HashMap 类型的 Map 对象。 有关更多调查,请参阅创建自定义适配器。

在 getView 方法(覆盖方法)中,您拥有 View ,并且可以获取列表并通过位置参数获取选择的项目。

getView() 的一部分...:

@Override
public View getView(final int position, View convertView, ViewGroup parent){}

关于java - 如何将 Hashmap 值存储在 ListView 中 LongclickListener 的变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62383635/

相关文章:

java - 在 Maven3 而不是 Maven2 中使用插件时 MavenProject 参数导致错误

java - 使用 Micrometer 将 New Relic 与 Spring Boot 集成

JavaFX:多个选择器修改相同的属性

java - 以预设的纵横比和宽度/高度裁剪图像并保存

android - 辅助模块中的 Gradle buildSrc 依赖项

java - Android Studio 未启动

javascript - 显示到 ListView 问题

java - Servlet 可以有多少种方式被破坏?

android - NPE 自定义 ListView 适配器

android - 如何创建带有 Assets html 文件链接的 ListView ?