如何在Android中对组和子项可扩展列表视图进行排序?

2023-12-12

我在mysql中有两个表,它们通过id“id_catprods”和“ID_Cat”绑定“类别”和“产品”。到目前为止,一切顺利,我正在 Android 上使用“ExpandableListView”和自定义适配器,一切正常,但找不到用其产品对类别进行排序的解决方案。谁能帮我?

杰森结果:

{
"productos": [{
    "id_catprods": "1",
    "id_oferta": "197",
    "id_producto": "1",
    "nombr_cat": "Bocatas",
    "id_cat": "1",
    "nombre_producto": "Lomo",
    "precio": "4",
    "actions": []
}, {
    "id_catprods": "2",
    "id_oferta": "197",
    "id_producto": "2",
    "nombr_cat": "Pizzas",
    "id_cat": "2",
    "nombre_producto": "Serranito",
    "precio": "4",
    "actions": []
}],
"errorCode": 0,
"errorString": "Todo correcto"
}

主要代码:

// DownloadJSON AsyncTask
        private class DownloadJSON extends AsyncTask<Void, Void, Void> {
            String givemeurl;

            public DownloadJSON(String url) {
                this.givemeurl = id_oferta;
            }


            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                mProgressDialog = new ProgressDialog(Category.this);
                mProgressDialog.setMessage("Cargando...");
                mProgressDialog.setIndeterminate(false);
                mProgressDialog.show();
            }

            @Override
            protected Void doInBackground(Void... params) {
                // Create an array
                arraylist = new ArrayList<HashMap<String, String>>();
                // Retrieve JSON Objects from the given URL address
                jsonobject = JSONfunctions
                        .getJSONfromURL("http://file.php");

                if(jsonobject != null){         
                    try {
                        // Locate the array name in JSON
                        jsonarray = jsonobject.getJSONArray("productos");

                        for (int i = 0; i < jsonarray.length(); i++) {
                            HashMap<String, String> map = new HashMap<String, String>();
                            jsonobject = jsonarray.getJSONObject(i);
                            // Retrive JSON Objects
                            map.put("nombr_cat", jsonobject.getString("nombr_cat"));
                            map.put("nombre_producto", jsonobject.getString("nombre_producto"));
                            map.put("id_cat", jsonobject.getString("id_cat"));
                            arraylist.add(map);
                        }

                    } catch (JSONException e) {
                        Log.e("Error", e.getMessage());
                        //e.printStackTrace();
                    } catch (Exception e) {
                        Log.e("Error", e.getMessage());         
                    }
                }else{
                    //Log.e("Response","No data");
                }

                return null;
            }

            @Override
            protected void onPostExecute(Void args) {
                ExpandableListView = (ExpandableListView) findViewById(R.id.expandableListView1);

                /*if(listview.getCount() == 0){
                    listview.setVisibility(View.GONE); // ERROR A CORREGIR, DOBLE CAPA?
                    listview.setEmptyView(findViewById(givemeempty));
                    TextView bottom = new TextView(Category.this);
                    bottom.setHeight(50); //50dp
                    bottom.setText("");
                    // Adding bottom
                    listview.addFooterView(bottom);
                }else{
                }*/
                adapter = new ListViewAdapterCat(Category.this, arraylist);
                ExpandableListView.setAdapter(adapter);
                mProgressDialog.dismiss();
            }
        }

适配器代码:

 public class ListViewAdapterCat extends BaseExpandableListAdapter {

    Context context;
    ArrayList<HashMap<String, String>> data;
    //ImageLoader imageLoader;
    HashMap<String, String> resultp = new HashMap<String, String>();

    public ListViewAdapterCat(Context context,
            ArrayList<HashMap<String, String>> arraylist) {
        this.context = context;
        data = arraylist;    
        //imageLoader = new ImageLoader(context);
    }

    @Override
    public Object getChild(int arg0, int arg1) {
        // TODO Auto-generated method stub
        return null;
    }
    @Override
    public long getChildId(int arg0, int arg1) {
        // TODO Auto-generated method stub
        return 0;
    }
    @Override
    public View getChildView(int arg0, int arg1, boolean arg2, View arg3,
            ViewGroup arg4) {   
        TextView tv = null;
        for (int i = 0; i < data.size(); i++) {
            tv = new TextView(context);
            tv.setTextSize(20);
            tv.setPadding(50, 0, 0, 0);
            System.out.println(data.get(i).get("id_cat"));
            if(data.get(i).get("id_cat").equals("1")){
                tv.setText(resultp.get(Category.nombre_producto));
            }else if (data.get(i).get("id_cat").equals("2")){
                tv.setText(resultp.get(Category.nombre_producto));
            }else if (data.get(i).get("id_cat").equals("3")){
                tv.setText(resultp.get(Category.nombre_producto));
            }

        }
        return tv;
    }
    @Override
    public int getChildrenCount(int arg0) {
        // TODO Auto-generated method stub
        return 1;
    }
    @Override
    public Object getGroup(int arg0) {
        // TODO Auto-generated method stub
        return arg0;
    }
    @Override
    public int getGroupCount() {
        // TODO Auto-generated method stub
        return data.size();
    }
    @Override
    public long getGroupId(int arg0) {
        // TODO Auto-generated method stub
        return arg0;
    }
    @Override
    public View getGroupView(int arg3, boolean arg1, View convertView, ViewGroup arg4) {

        ViewHolder holder;
        if(convertView == null){

            LayoutInflater infalInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = infalInflater.inflate(R.layout.category_item, null);

            holder = new ViewHolder();

            holder.nombr_cat = (TextView) convertView.findViewById(R.id.nombree);
            Log.e("ID DEL GRUPO", ""+arg3);
            convertView.setTag(holder);
        }else{
            holder = (ViewHolder) convertView.getTag();
        }

        resultp = data.get(arg3);

        holder.nombr_cat.setText(resultp.get(Category.nombr_cat));
        holder.nombr_cat.setTextSize(20);
        return convertView;
    }
    @Override
    public boolean hasStableIds() {
        // TODO Auto-generated method stub
        return false;
    }
    @Override
    public boolean isChildSelectable(int arg0, int arg1) {
        // TODO Auto-generated method stub
        return true;
    }
    private static class ViewHolder {
        public TextView nombr_cat;
        public TextView nombre_producto;
    }
}

如果可能的话,在 MySql 中查询时对它们进行排序。否则,这里有一个建议。将类别存储在ArrayList<String>。您可以使用其中之一轻松对它们进行排序Collection.sort()。然后,将您的产品存放在Hashtable<String, ArrayList<Product>>其中键是类别名称,数据是存储产品详细信息的产品类。您可以使用以下方式对产品类别进行排序Comparator<Product>。您将需要相应地修改适配器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Android中对组和子项可扩展列表视图进行排序? 的相关文章

  • Java GUI,根据actionListener更改面板

    我在两个不同的面板中添加了两个按钮 如果单击第一个按钮 则需要转到下一个面板 其中包含第二个按钮 但是当我单击第一个按钮时 该按钮没有被替换 Java GUI import java awt event ActionEvent import
  • 如何跨工作区保存 E​​clipse 启动配置文件?

    当我复制 Eclipse 项目目录时 它包含 classpath 和 project 文件 这样当我将同一目录带到另一个 Eclipse 实例时 我不必设置我的构建路径等 假设所有资源都包含在在项目中 而不是外部 但是 此过程不会导致启动配
  • 查找前 N 个五边形数

    我必须找到第一个N pentagonal numbers 1 从 1 100 并每行显示 10 个 我必须使用getPentagonalNumber int n 方法也是如此 显然这就是它存在的原因 到目前为止 这是我的代码 package
  • @android的含义

    我想问一下是什么意思 android as in android id android id list 我在不同的 android 示例和教程中看到过它 我也用谷歌搜索过它 我发现的唯一解释是 列表和空 ID 是由 Android 平台为我
  • 解析JSON数据并将其放入gridview中

    我正在开发一个应用程序 我必须在其中解析JSON数据并且必须将它们放入自定义中gridview 它应该是这样的 到目前为止 我已经在 asynctask 中解析了 JSON 数据并获取了这些值 这是我的代码 private class ge
  • 将带有 md5 消息摘要和 DESede/CBC/PKCS5Padding 的 3DES 加密的 java 代码转换为 python

    我有这个工作java代码 它使用3DES加密对密码进行加密 import java security MessageDigest import java util Arrays import java util Base64 import
  • Android 中 Admob 的 XML 或 Java 关键字

    我似乎找不到任何有关通过 XML 或 Java 设置 adMob 广告关键字的可靠文档 我已经尝试过中看到的方法this https stackoverflow com questions 5066129 android admob api
  • spring-hibernate 花费更多时间的任何原因?

    目前 我正在春季和冬眠期间从事一个项目 我来到这里 获取记录并在 JSP 中显示这些记录需要更多时间 我在各处都保留了时间戳 以查看哪里花费了更多时间 Time HomeController start 2014 07 09 18 58 5
  • 如何删除 Spring 的 RestTemplate 添加的某些 HTTP 标头?

    我在远程服务方面遇到问题 我无法控制对使用 Spring 的 RestTemplate 发送的请求进行 HTTP 400 响应 使用发送的请求curl但被接受了 所以我将它们与通过 RestTemplate 发送的内容进行了比较 特别是 S
  • 选择活动时运行时崩溃

    首先我想说我几乎没有 Android 经验 这是我在 Android 中的第一个项目 而且我的老师不太擅长教学 所以我对任何过度的无知表示歉意 在进一步讨论之前先解释一下 我的应用程序的目标本质上是能够记录您在某些活动上花费了多少时间 记录
  • 从 Spring 启动运行 Java 类

    我使用的是Java8和Spring4 3 1 我有一个 Java Spring 应用程序托管由浏览器和移动应用程序客户端访问的 RESTfult 服务 其次 我编写了一个侦听事件的聊天服务器 socket io 来自客户 该聊天服务器正在从
  • 只需更新一个小部件 RemoteViews 而不是完全创建一个新小部件?

    在 AppWidgetProvider 类的 onUpdate 方法中 我最终执行了大量代码 以便我可以完全重新创建一个新的 RemoteView 对象 现实是 每次更新时 我实际上只需要在 RemoteView 中的 TextView 之
  • RecyclerView 来自 Firebase 的部分和数据

    您好 我正在开发一个应用程序 在其中我必须使用 Firebase 填充数据回收器视图 准备就绪 现在我想做的是用 data firebase 填写一个 recyclerview 但有一些部分将成为托管 data firebase 的父级 我
  • 如何在两种不同模式、两种布局中设置方向?

    我有一个叫做Main XML我将方向设置为纵向AndroidManifest xml 我也为 Honeycomb 设计了这个布局并将其放置在layout xlarge mdpi文件夹 但我想使用Main XML in layout xlar
  • Selenium 查看鼠标/指针

    有什么方法可以在运行测试时真正看到硒鼠标吗 要么是 Windows 光标图像 要么是某种点或十字线或任何东西 我正在尝试使用拖放功能selenium and java in an HTML5Web 应用程序 并且能够看到光标以了解它实际在做
  • 找不到满足版本限制的“com.google.code.findbugs:jsr305”版本

    当生成签名的 APK 进行发布时 我收到此错误消息 Cannot find a version of com google code findbugs jsr305 that satisfies the version constraint
  • 如何为Android设置图像顶部和底部相同的大小?

    我想在中心 顶部和底部显示相同尺寸的图像 请参阅下面的屏幕 有人知道请给我代码 谢谢大家 Use android scaleType centerInside or ImageView setScaleType ImageView Scal
  • java有类似C#的属性吗? [复制]

    这个问题在这里已经有答案了 C 属性 我的意思是 get 和 set 方法 是一个非常有用的功能 java 也有类似 C 的属性吗 我的意思是我们如何在 java 中实现类似以下 C 代码的内容 public string Name get
  • 在活动之间共享菜单栏

    我的应用程序上有一个菜单栏 我需要在 5 个活动之间共享该菜单栏 我的菜单栏 5 个允许在活动之间切换的按钮 对于任何活动具有完全相同的 UI 和相同的行为 因此我想共享菜单栏 XML 视图代码和控制器代码 我已经找到了一种使用共享 XML
  • 这种说法是否恰当。 if (0 != 表达式或变量) {} 在java中? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi

随机推荐

  • Spring boot Tomcat – 启用/禁用目录列表

    I have spring boot应用程序和我正在使用embedded tomcat作为网络服务器 我在列出目录时遇到问题 我现在就想怎样才能enable or disable listing directories在嵌入式tomcat中
  • 更改 JPanel Graphics g 颜色绘制线

    我有一个类似于绘画的程序 而且我正在尝试实现更改笔颜色 但是当我更改颜色时 当前绘制的所有内容都会更改为红色 例如在我的程序中 我怎样才能使其不会将当前绘制的所有内容重新绘制为当前颜色改变颜色 下面的代码将编译并运行 JPanel 绘图区域
  • 在 spring 中加载属性文件

    我们的一个团队已经以这种方式实现了加载属性 请参见下面的伪代码 并建议这种方法是正确的 因为使用这种方法的客户端应用程序可以自由地将属性保留在任何文件中 与广泛使用的 propertyplaceholderconfigurer 相反 应用程
  • 将数组转换为 JSON

    我有一个数组var cars 2 3 其中包含一些整数 我已经向数组添加了一些值 但现在需要通过 jQuery 将此数组发送到页面 get方法 如何将其转换为 JSON 对象进行发送 向后兼容的脚本 https github com dou
  • 解析性能(If、TryParse、Try-Catch)

    我了解很多处理解析文本以获取信息的不同方法 例如 对于解析整数 可以预期什么样的性能 我想知道是否有人知道这方面的任何好的统计数据 我正在从测试过这个的人那里寻找一些真实的数字 其中哪一个在哪些情况下提供最佳性能 Parse Crash i
  • 是否有任何浏览器(Chrome、Firefox)插件​​可以模拟地理位置?

    我需要测试广泛使用地理定位 api getCurrentPosition watchPosition 的 Web 应用程序 是否有任何浏览器 Chrome Firefox 插件 可以模拟地理位置 我来晚了一点 但是微软边缘有这个有用的选项卡
  • Java JTextPane JScrollPane 显示问题

    下面的类实现了一个 chatGUI 当它运行正常时 屏幕如下所示 精美 ChatGUI http img21 imageshack us img21 7177 rightchat jpg 当我输入大长度的文本时 问题经常出现 50 100
  • 将函数应用于大小相等的连续子向量

    我正在寻找一种很好且快速的方法来应用一些对向量进行操作的任意函数 例如sum 连续到连续 K 个元素的子向量 这是一个简单的例子 它应该非常清楚地说明我想要什么 v lt c 1 2 3 4 5 6 7 8 v2 lt myapply v
  • 在Delphi中将多维数组作为参数传递

    我想将多维数组传递给构造函数 如下所示 constructor TMyClass Create MyParameter array of array of Integer begin LocalField MyParameter end 其
  • 改造响应问题

    我正在尝试通过改造获取状态列表并尝试添加可搜索微调器 我得到什么 我收到了回复中的州列表 I can access one state in Spinner What i want 我想访问 Spinner 中的多个状态 Code getM
  • C# Office 2010 自动化

    我正在尝试制作一个程序 将数据插入到现有Word文档中的特定位置并保存它的副本 我不知道如何做到这一点 而且我找不到任何关于 Office 2010 自动化的好资源 谁能指出我正确的方向和 或给我一些例子 提前致谢 找到解决方案稍后添加答案
  • 硬币交换变体的动态规划解决方案

    我正在练习动态规划 我关注的是硬币兑换问题的以下变体 Let S 1 2 6 12 24 48 60 是整数硬币面额的常数集 让n是通过硬币可获得的正整数金额S 考虑两个人A and B 我可以用多少种不同的方式来分割n人与人之间A and
  • 在进行未更改的合并时,文件被列为挂起的更改?

    我们已经发生过多次这样的情况 我们认为这不仅仅是侥幸 当我们完成分支后合并回来时 会有比应有的更多的更改 因此 大多数显示为挂起更改的文件从未更改 在大多数情况下 既不在分支也不在基础 当我比较它们时 我使用超越比较 没有差异 我没有浏览所
  • 在数据库中存储字符串数组

    我有一个通过 ORM 保存到数据库的对象 该对象有一个字符串数组 每个对象的数组长度可能不同 我想知道在数据库中存储字符串数组的标准做法 例如 我应该将所有字符串存储在一个字段中作为 csv 等 我猜你有一个 MySql 关系数据库 作为第
  • 使用 OpenCV 和 ffmpeg 后端编码 HEVC 视频

    我尝试使用带有 ffmpeg 后端的 OpenCV 和 Python3 将网络摄像头编码为 HEVC 视频 它可以与其他编解码器配合使用 例如mjpg 这是我的示例脚本 它使用相应的fourcc 也尝试过hevc h265 x265 etc
  • 将 Joda LocalDate 或 java.util.Date 转换为当天开始时的 LocalDateTime

    我使用的是乔达2 5 将 Joda LocalDate 转换为 LocalDateTime 时遇到问题 因为 我可以将 LocalDate 转换为 DateTime 时间为 StartOfDay 我想要相同的功能 但通过 LocalDate
  • Struts2 devMode 在提交标签中使用“key”属性时出现异常

    我正在使用 Struts2devMode打开以捕获尽可能多的警告和错误 现在我遇到了一些仅在 devMode 中通知的严重通知 我正在使用submit标签 我包括key获取按钮文本的属性 Entrar 来自一个名为global BOTON
  • 如何将库添加到 Eclipse CDT? (没有这样的文件或目录)

    我在添加标头库时遇到一些问题 我右键单击我的项目 然后单击属性 gt C C 常规 gt 路径和符号 In the Includes tab 语言 gt GNU C 我点击添加 gt 文件系统然后添加名为 boost 1 52 0 的文件夹
  • Python tkinter mainloop 在关闭窗口时不退出

    我是编程和 Python 新手 正在制作一个计算器应用程序来练习 我正在使用 Tkinter 和 Python 2 7 该应用程序具有您所期望的各种按钮 以及用于显示数字 结果的条目和标签小部件 我认为我的程序确实启动了主循环 但关闭窗口并
  • 如何在Android中对组和子项可扩展列表视图进行排序?

    我在mysql中有两个表 它们通过id id catprods 和 ID Cat 绑定 类别 和 产品 到目前为止 一切顺利 我正在 Android 上使用 ExpandableListView 和自定义适配器 一切正常 但找不到用其产品对