如何解决java.lang.IndexOutOfBoundsException:无效索引0,大小为0?

2023-12-03

我有两个自动完成文本视图,在第一个自动完成文本视图中,我使用 json 从服务器获取项目,以下是对此的响应

{"status":"success","clientlist":[{"cid":"1","name":"margi"},{"cid":"2","name":"steven"}],"productboxtype":[{"pbxid":"1","pbxname":"1 Dozen","qtyperbox":"12"},{"pbxid":"2","pbxname":"2 Dozens","qtyperbox":"24"},{"pbxid":"3","pbxname":"3 Dozens","qtyperbox":"36"}]}

我能够在我的第一个自动完成中获取姓名并且工作正常,

现在的问题是假设用户选择项目“margi”并且它的cid是1,所以我再次向服务器发送请求并尝试获取“margi”的产品名称,它的响应是

{"status":"success","clientproduct":[{"pid":"4","name":"kangan pair","unitprice":"1500","boxqty":"1","bulkprice":[{"minqty":"10","price":"1500"},{"minqty":"15","price":"1470"},{"minqty":"20","price":"1460"}]}]}

MAni活动

   public class MainActivity extends Activity {

    private AutoCompleteTextView acTextView;

    private String catidtemp;
    private String catid;

    JSONParser jsonParser = new JSONParser();
    private AutoCompleteTextView autoproduct;
    private static final String FEEDBACK_URL = "";
    private static final String FEEDBACK_SUCCESS = "status";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);

        acTextView = (AutoCompleteTextView) findViewById(R.id.autocmplte_clorder_clname);
        acTextView.setAdapter(new SuggestionAdapterClientList(this,acTextView.getText().toString()));

        autoproduct=(AutoCompleteTextView)findViewById(R.id.autocmplte_clorder_product);
        autoproduct.setAdapter(new SuggestionAdapterClientProduct(this, autoproduct.getText().toString()));

        acTextView.setOnItemClickListener(new OnItemClickListener() {


            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // TODO Auto-generated method stub


                JsonParseClientProduct jp=new JsonParseClientProduct();
                List<SuggestGetSetClientProduct> list1 = new ArrayList<SuggestGetSetClientProduct>();
                list1 =jp.getParseJsonWCF(autoproduct.getText().toString());
                if(position < list1.size())
                new AttemptLogin(Integer.parseInt(list1.get(position).getId())).execute();
            }
        });

    }

      class AttemptLogin extends AsyncTask<String, String, String> {

        boolean failure = false;
        private ProgressDialog pDialog;

        private int selected_cid=1;
        AttemptLogin(int selected_cid){
        this.selected_cid=selected_cid;
        }


        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(MainActivity.this);
            pDialog.setMessage("Sending..");
            pDialog.setIndeterminate(true);
          //  pDialog.setIndeterminateDrawable(getResources().getDrawable(R.drawable.custom_progress));
            pDialog.setCancelable(true);
            pDialog.show();
        }

        @SuppressWarnings("unused")
        @Override
        protected String doInBackground(String...args) {
            //Check for success tag
            //int success;
            Looper.prepare();



             try {

                 JsonParseClientList jp=new JsonParseClientList();
                    List<NameValuePair> params = new ArrayList<NameValuePair>();
                 List<SuggestGetSetClientList> list =jp.getParseJsonWCF(acTextView.getText().toString());

                     for(int i = 0;i<list.size();i++)
                     {
                       if(list.get(i).getName().equals(acTextView.getText().toString()))
                       // params.add(new BasicNameValuePair("cid",list.get(i).getId()));

                           params.add(new BasicNameValuePair("cid",String.valueOf(selected_cid)));

                         //  catid=list.get(i).getId();
                      // catidtemp=list.get(i).getId();


                     }

                    catidtemp=String.valueOf(selected_cid);
                // catidtemp=list.get(i).getId();
                 System.out.println("cattttttiiiiddd????"+catidtemp);
                 params.add(new BasicNameValuePair("action", "clientproduct"));

                 System.out.println("su gayu server ma????"+params);

                 Log.d("request!", "starting");
                 // getting product details by making HTTP request
                 JSONObject json = jsonParser.makeHttpRequest (
                     FEEDBACK_URL, "POST", params);
                 //check your log for json response
                 Log.d("Login attempt", json.toString());

                 JSONObject jobj = new JSONObject(json.toString());
                 final String msg = jobj.getString("msg");




                 return json.getString(FEEDBACK_SUCCESS);

             }catch (JSONException e) {
                 e.printStackTrace();
             }
             return null;
        }

        // After completing background task Dismiss the progress dialog

        protected void onPostExecute(String file_url) {
            //dismiss the dialog once product deleted
            pDialog.dismiss();

            //parentcat.getText().clear();
    }}
      public class SuggestGetSetClientProduct {

            String id,name;
            public SuggestGetSetClientProduct(String id, String name){
                this.setId(id);
                this.setName(name);
            }
            public String getId() {
                return id;
            }

            public void setId(String id) {
                this.id = id;
            }

            public String getName() {
                return name;
            }

            public void setName(String name) {
                this.name = name;
            }
        }

       public class JsonParseClientProduct {


            double current_latitude,current_longitude;
            public JsonParseClientProduct(){}
            public JsonParseClientProduct(double current_latitude,double current_longitude){
                this.current_latitude=current_latitude;
                this.current_longitude=current_longitude;
            }
            public List<SuggestGetSetClientProduct> getParseJsonWCF(String sName)
               {
                List<SuggestGetSetClientProduct> ListData = new ArrayList<SuggestGetSetClientProduct>();
                try {
                   String temp=sName.replace(" ", "%20");


                   System.out.println("what the...."+js);
                   URLConnection jc = js.openConnection();
                   BufferedReader reader = new BufferedReader(new InputStreamReader(jc.getInputStream()));
                   String line = reader.readLine();
                   JSONObject jsonResponse = new JSONObject(line);
                   Log.d("test", "Response : " +jsonResponse);
                   JSONArray jsonArray = jsonResponse.getJSONArray("clientproduct");
                   for(int i = 0; i < jsonArray.length(); i++){
                       JSONObject r = jsonArray.getJSONObject(i);
                       ListData.add(new SuggestGetSetClientProduct(r.getString("pid"),r.getString("name")));
                   }


               } catch (Exception e1) {
                   // TODO Auto-generated catch block
                   e1.printStackTrace();
               }
                return ListData;

               }
        }
        public class SuggestionAdapterClientProduct extends ArrayAdapter<String>{


            protected static final String TAG = "SuggestionAdapter";
            List<String> suggestions = new ArrayList<String>();
           // private List<String> suggestions;
            public SuggestionAdapterClientProduct(Activity context, String nameFilter) {
                super(context, android.R.layout.simple_dropdown_item_1line);
                suggestions = new ArrayList<String>();
            }

            @Override
            public int getCount() {
                return suggestions.size();
            }

            @Override
            public String getItem(int index) {
                return suggestions.get(index);
            }

            @Override
            public Filter getFilter() {
                Filter myFilter = new Filter() {
                    @Override
                    protected FilterResults performFiltering(CharSequence constraint) {
                        FilterResults filterResults = new FilterResults();
                        JsonParseClientProduct jp=new JsonParseClientProduct();
                        if (constraint != null) {
                            // A class that queries a web API, parses the data and
                            // returns an ArrayList<GoEuroGetSet>

                            List<SuggestGetSetClientProduct> new_suggestions = new ArrayList<SuggestGetSetClientProduct>();
                            new_suggestions =jp.getParseJsonWCF(constraint.toString());
                            Log.d("test", "Size of array : " +new_suggestions.size());
                          //List<SuggestGetSetClientProduct> new_suggestions =jp.getParseJsonWCF(constraint.toString());
                            suggestions.clear();
                            /*for (int i=0;i<new_suggestions.size();i++) {
                            suggestions.add(new_suggestions.get(i).getName());
                        }*/

                        for (int i=0;i<new_suggestions.size();i++) {
                            String name=new_suggestions.get(i).getName();
                            String id=new_suggestions.get(i).getId();
                            System.out.println("checis id"+id);
                            if(name.contains(constraint)){
                            suggestions.add(new_suggestions.get(i).getName());


                               }   
                        }
                            // Now assign the values and count to the FilterResults
                            // object
                            filterResults.values = suggestions;
                            filterResults.count = suggestions.size();
                        }
                        return filterResults;
                    }

                    @Override
                    protected void publishResults(CharSequence contraint,
                            FilterResults results) {
                        if (results != null && results.count > 0) {
                            notifyDataSetChanged();
                        } else {
                            notifyDataSetInvalidated();
                        }
                    }
                };
                return myFilter;
            }
        }
}

enter image description here enter image description here enter image description here


java.lang.IndexOutOfBoundsException:无效索引 0,大小为 0 java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)

我相信问题就在这里

 List<SuggestGetSetClientProduct> new_suggestions =jp.getParseJsonWCF(constraint.toString());

你初始化了吗ArrayList ?

List<SuggestGetSetClientProduct> new_suggestions = new ArrayList<SuggestGetSetClientProduct>;

检查尺寸ArrayList首先在它去之前For loop.

EDIT :

你的代码应该是这样的,

                if (constraint != null) {

                   List<SuggestGetSetClientProduct> new_suggestions = new ArrayList<SuggestGetSetClientProduct>();
                   new_suggestions =jp.getParseJsonWCF(constraint.toString());
                   Log.d("test", "Size of array : " +new_suggestions.size());

               // rest code here..//

另外,您没有初始化您的列表SuggestionAdapterClientProduct class,

 private List<String> suggestions;

通过以下方式初始化你的 arrayList:

List<String> suggestions = new ArrayList<String>();

在那堂课上。

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

如何解决java.lang.IndexOutOfBoundsException:无效索引0,大小为0? 的相关文章

  • 如何用Android做交互动画(翻译)

    我在 Android 中有一些 png 序列 我需要将它们的 x 和 y 位置从屏幕顶部到底部的翻译动画化 当动画发生时 我需要对象来接收单击事件 我知道这在 3 0 之前的 Android 版本中效果不太好 因为display对象的位置与
  • Kotlin Android Firebase 数据库哈希映射转换为类

    我正在尝试从 firebase 数据库获取数据 断点显示它正在获取数据 但看起来我没有正确地将其分配给我的班级 这会导致此异常 java lang ClassCastException 无法将 java util HashMap 转换为 班
  • Android Studio Canary 3.4 Canary 4:错误:功能插件不支持variant.getApplicationId()

    自从我在新版本上更新了我的项目以来Android Studio 3 4 金丝雀 4 gradle 同步失败 因为 ERROR variant getApplicationId is not supported by feature plug
  • 服务如何在后台运行 - Android

    今天的采访中我被问到了这个问题 什么是服务 我对此的回答是 Service 是 Android 的基本组件 它没有 UI 并且在后台运行 Service 是否在主线程上运行 不 那么它是如何在后台运行的呢 我心里一片空白 有人可以解释一下如
  • 将用户重定向到 iTunes 应用商店或 Google Play 商店?

    我正在寻找一种简单的解决方案来发布我的应用程序的一个链接 例如在 Facebook 上 如果用户使用移动设备访问它 它应该自动重定向到正确的应用程序商店 否则 用户应该被重定向到我的网站 iOS应用程序 http itunes apple
  • Android Widget ID 是否持久

    在从桌面删除该 Widget 实例之前 您从操作系统收到的用户桌面上特定 Widget 实例的 Widget ID 是否一致 我找不到任何明确说明这一点的文档 但我假设这是因为文档说您可以使用小部件 id 来存储任何实例配置信息 我想将一些
  • 如何使用具有三种布局的视图翻转器?

    我目前正在使用ViewFlipper我的主要活动有两种不同的布局 我想使用第三种布局 但我只能找到showNext and showPrevious 命令 有人可以告诉我如何使用来实现第三种布局吗ViewFlipper 为您制作了一个示例
  • ndk-build error.opencv2/core/core.hpp:没有这样的文件或目录

    我在 Android 中使用 OpenCV Nonfree 模块时遇到问题 我读了这个教程https sites google com site wghsite technical notes sift surf opencv androi
  • 无法接收UsbManager.ACTION_USB_DEVICE_ATTACHED/UsbManager.ACTION_USB_DEVICE_DETACHED的广播Intent

    我最近正在编写一个 USB 主机应用程序 但它被卡住了 因为我无法检测到设备连接 分离事件 我遵循了编码说明http developer android com guide topics connectivity usb host html
  • 使用 RoboSpice 有没有办法从异常中获取 HTTP 错误代码?

    我正在编写一个使用 RoboSpice 的应用程序 在请求侦听器 onRequestFailure SpiceException arg0 中 有没有办法确定该错误是由于发生 401 HTTP 错误而导致的 我有一个后端服务 当令牌过期时
  • Fresco:滚动 RecyclerView 后图像消失

    我有一个 Horizo ntal RecyclerView 每个项目都有一个使用 Facebook Fresco 图像库加载到其中的图像 然而 虽然正确的图像最初是在屏幕上滚动一点时加载的 但当 RecyclerView 进一步滚动时 它就
  • DialogFragment 关闭事件

    我需要处理 DialogFragment 的结尾 在调用 dismiss 之后 例如 我会在关闭后 包含 片段的活动内显示一个 toast 我该如何处理该事件 覆盖onDismiss 在你的DialogFragment中 或者使用setOn
  • Android 两个 Activity 之间的共享元素转换不起作用

    在我的应用程序中 我尝试使用新引入的活动之间共享的元素 如果共享元素具有固定位置 例如 android layout gravity top 但是当视图被锚定时问题就出现了 我的第一个活动如下所示
  • Android:选择 EditField 上焦点上的所有文本

    我试图让 Android 在获得焦点时选择 EditText 字段中的所有文本 我在布局中使用此属性 在两个字段上 android selectAllOnFocus true 我不确定这是否相关 但为了将光标移动到第一个可编辑字段 前面 还
  • 致命异常:GoogleApiHandler

    在我的项目中 我使用货币化服务 Vungle AppLovin 当我尝试加载广告时 出现此异常 E AndroidRuntime 致命异常 GoogleApiHandler 进程 kz ikar PID 3673 java lang NoS
  • Android SDK WebView调用Activity

    我试图在单击 WebView 组件内的链接时启动活动 我的Webview已加载到里面Main java我想启动SubActivity java当点击网站内的链接时Main java 另外 如何将参数传递给此活动 Example inspec
  • Retrofit 2.0:预期为 BEGIN_OBJECT,但在第 1 行第 1 列路径 $ [重复] 处为 STRING

    这个问题在这里已经有答案了 我在邮递员上传递了更新用户请求并获得了成功的响应 参见图片 现在当我尝试使用 Retrofit 2 在我的应用程序中执行相同操作时 出现错误 com google gson JsonSyntaxException
  • 使用 PDFBox 在 Android 中创建 PDF

    我正在尝试通过我的 Android 应用程序创建 PDFPDFBoxapi 但出现以下错误 java lang NoClassDefFoundError org apache pdfbox pdmodel PDDocument 我已经将以下
  • android.view.WindowLeaked - 使用对话框和新意图时

    我已经尝试了 stackoverflow 上提供的所有可能的解决方案 但我仍然在 logcat 中遇到此错误 活动 com xyz MainActivity 泄露了最初在此处添加的窗口 com android internal policy
  • FCM(Firebase Cloud Messaging)如何发送到所有手机?

    我创建了一个小型应用程序 能够从 FCM 控制台接收推送通知 我现在想做的是向所有使用 API 安装应用程序的 Android 手机发送推送通知 这就是我完全迷失的地方 有没有办法在不收集所有注册ID的情况下将其发送到所有手机 这是否仅适用

随机推荐

  • 约束最小二乘法

    我正在 R 中对人均天然气使用量进行简单回归 回归公式如下 gas b lt lm log gasq pop log gasp log pcincome log pn log pd log ps log years data gas sum
  • 带有图像和 2 TextView 的 TableRow

    我在做这样的事情时遇到问题 http imageshack us photo my images 824 examplehm png 我的 xml 代码在行中显示 3 列 但我想要 2 列 并且第二列必须分为两个水平部分 My xml
  • ffmpeg 中的多个命名管道

    这个问题是后续这个问题 在我的应用程序中 我想修改各种mp3 然后将它们混合在一起 我知道我可以在 FFmpeg 中使用单个命令行来完成此操作 但它最终可能会非常混乱 因为我需要在每个样本上使用各种过滤器 而我有五个过滤器 我的想法是单独编
  • Windows批处理文件-分割字符串以设置变量

    我觉得我在用 FOR 循环选项兜圈子 我试图获取一个字符串 命令的输出 并用逗号分隔它 然后使用每个值来设置 例如 String USER Andy IP 1 2 3 4 HOSTNAME foobar PORT 1234 所以我想用逗号分
  • SonarQube:扫描过程忽略 lcov.info

    我正在扫描ui项目 源代码位于typescript gulp test coverage产生 js文件 然后扫描其覆盖范围 每个 ts文件得到一个 js文件就在它旁边 在同一位置 我将扫描仪指向lcov info文件如下 sonar jav
  • jssor 与 Angular 2 Typescript

    我正在使用 Angular 2 开发一个网站 此时 我已经购买了 Jssor 的订阅 以便为运行到同一页面的 3 个以上单独的滑块生成图像滑块 我当前的问题是文档加载后生成的动态滑块 但未显示 我在 npmjs com 中找到了 jssor
  • 如何在R中绘制完整的图?

    我想在 R 中绘制完整的图表 我怎样才能做到这一点 我在 CRAN 上发现只有一个包具有生成完整图表的功能 但是这个包 即 RnavGraph 没有安装 而是以错误状态退出 进一步搜索似乎很困难 因为图的含义不同 图不仅与图结构相关 而且还
  • 修改颜色选择器面板

    我正在创建一个颜色选择器 需要修改其中一个颜色选择器面板 我想要的是 我想通过 RGB 字段输入输入值来设置颜色 问题是 RGB 值似乎被禁用 api 中是否有一种方法可以打开 RGB 输入以获取值 这里看起来不错 import javax
  • CSS3 中是否有相当于 jQuery 的 :first 选择器?

    我有以下标记 div class a div div class b div div class b div div class b div div class c div 我正在尝试瞄准first and last div 与类b 如果我
  • Firebase 9 + NextJS 12 - 预计 collection() 的第一个参数是 CollectionReference、DocumentReference 或 FirebaseFirestore

    我正在尝试在 NextJS 应用程序中创建一个简单的 Firestore 数据库查询 I have clientApp ts看起来像这样 import firebase compat auth import firebase compat
  • 将锁定的 std::unique_lock 移交给新线程

    考虑下面的例子 我创建了一个std mutex 锁定它 然后将锁交给另一个线程 include
  • 结构需要一生,因为?

    每条语句都标有 希望得到断言 我只是慢慢地度过一生 由于生命周期省略有助于省略明确描述生命周期 有些情况我们需要描述它们 一个示例可能是包含引用的结构 struct Person
  • 空手道 UI - 并行运行场景会引发错误“HttpHostConnectException:连接到 localhost:9222”

    我正在尝试使用以下方法执行包含 3 个场景的功能 Results results Runner parallel tagQuery featurePaths null new ArrayList lt gt 3 karateOutputPa
  • Android - 将下载的图像从 URL 保存到 SD 卡上

    我在单击按钮时从 URL 加载图像 并将其存储为位图 现在我想知道如何将下载的图像保存到 SD 卡以及系统中 我尝试按以下方式进行操作 package com v3 thread fetchImage import java io File
  • 我可以让 WPF 为覆盖元素和被覆盖元素设置 IsMouseOver 吗?

    简化的例子是这样的 想象一下由两个重叠的元素 A 和 B 组成的维恩图 如果我将鼠标悬停在 A AND NOT B 上 则所有 A 都会亮起 如果我将鼠标悬停在 B AND NOT A 上 则所有 B 都会亮起 如果我将鼠标悬停在 A 和
  • jQuery Ajax 对 Web 服务的调用似乎是同步的

    我有两个来自 jquery 对 Web 服务的 ajax 调用 第一次通话 GetMessages 在 javascript 中开始一个间隔 setInterval 并返回存储在会话变量中的消息字符串数组 第二次调用 UploadUsers
  • 使用 eclipse 和 tomcat 7 运行和部署 servlet

    我创建了一个基于的测试项目Tomcat HelloWorld Servlet 与 Eclipse 并尝试像 Tomcat 7 一样从 Eclipse 运行它 我已将其配置为在 127 0 0 1 上运行 但我得到Page cannot be
  • Octave (Matlab) 中复杂函数的域着色(色轮)图

    我明白那个域或色轮绘图是复杂函数的典型特征 令人难以置信的是 我无法在网络搜索中找到超过一百万个返回来轻松地让我在维基百科中复制一些艺术作品 有这个在线资源再现黑色零的图 一点也不坏 但是 我想在 Octave 中请求一些简单的带注释的代码
  • 添加参考文献

    如何以编程方式添加程序集 DLL 作为 C 项目中的引用 我需要在运行时添加引用 考虑一下我的项目是否使用另一个类库 DLL 那么我需要将该 DLL 添加为我的项目中的引用 我怎样才能在运行时做到这一点 我猜你想在运行时加载类型 您可以使用
  • 如何解决java.lang.IndexOutOfBoundsException:无效索引0,大小为0?

    我有两个自动完成文本视图 在第一个自动完成文本视图中 我使用 json 从服务器获取项目 以下是对此的响应 status success clientlist cid 1 name margi cid 2 name steven produ