Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android java.lang.ArrayIndexOutOfBoundsException:长度=1;索引=-1_Android_Listview_Arraylist - Fatal编程技术网

Android java.lang.ArrayIndexOutOfBoundsException:长度=1;索引=-1

Android java.lang.ArrayIndexOutOfBoundsException:长度=1;索引=-1,android,listview,arraylist,Android,Listview,Arraylist,我有一个listView,可以让用户跟踪某些内容并删除项目行。当我按下delete按钮时,它显示问题如下。我已经在web上检查并找到解决方案,但我无法理解他们的解决方法,可能我的情况与他们不同。对这个问题有什么想法吗 Logcat输出(错误): ThirdActivity.java friend = new ArrayList<String>(Arrays.asList(result.split("[*]"))); public void onListItemClick(L

我有一个listView,可以让用户跟踪某些内容并删除项目行。当我按下delete按钮时,它显示问题如下。我已经在web上检查并找到解决方案,但我无法理解他们的解决方法,可能我的情况与他们不同。对这个问题有什么想法吗

Logcat输出(错误):

ThirdActivity.java

 friend = new ArrayList<String>(Arrays.asList(result.split("[*]")));  

 public void onListItemClick(ListView parent, View v, final int position, long id){
        AlertDialog.Builder adb = new AlertDialog.Builder(ThirdActivity.this);
               adb.setItems(item, new DialogInterface.OnClickListener() {                   
               public void onClick(DialogInterface dialog, int which) {                                        
                   if(item[which].equals("Track Location")){
                       ...
                   }else{
                       AlertDialog.Builder adb=new AlertDialog.Builder(ThirdActivity.this);
                       adb.setTitle("Delete?");
                       adb.setMessage("Are you sure you want to delete " + (String) lv.getItemAtPosition(position));
                       final int positionToRemove = position;
                       adb.setNegativeButton("Cancel", null);
                       adb.setPositiveButton("Ok", new AlertDialog.OnClickListener() {
                           public void onClick(DialogInterface dialog, final int which) {                                                                                               
                               new Thread(){
                                    public void run(){
                                        try{
                                             httpclient = new DefaultHttpClient();
                                             httppost = new HttpPost("http://www.kryptoquest.com/tracker/remove.php");
                                             nameValuePairs = new ArrayList<NameValuePair>(2);
                                             Log.d("12345678",user); 
                                             nameValuePairs.add(new BasicNameValuePair("Targetname", (String) lv.getItemAtPosition(position)));
                                             nameValuePairs.add(new BasicNameValuePair("Username", user));
                                             httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                                             response = httpclient.execute(httppost);
                                             is = response.getEntity().getContent();
                                        }catch(Exception e){
                                            Log.e("log_tag", "Error:"+e.toString());
                                        }

                                        //convert response to string
                                        try{
                                                reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
                                                sb = new StringBuilder();
                                                line = null;
                                                while ((line = reader.readLine()) != null) {

                                                        sb.append(line + "\n");

                                                }
                                                Log.d("test",sb.toString());
                                                is.close();

                                                result = sb.toString();                                                     

                                            runOnUiThread(new Runnable()
                                           {
                                               public void run()
                                               {
                                                 Toast.makeText(ThirdActivity.this, result +  lv.getItemAtPosition(position), Toast.LENGTH_LONG).show();
                                               }
                                           });
                                        }catch(Exception e){
                                                Log.e("log_tag", "Error converting result "+e.toString());
                                        }
                                    }
                                }.start();
                               String delete = (String) ((lv.getAdapter()).getItem(which));
                               friend.remove(delete);
                               friend.trimToSize();
                               adapter.notifyDataSetChanged();   

                           }});
                       adb.show();
                   }
               }  
        });  
         AlertDialog ad = adb.create(); 
         ad.show();       
    }
friend=newarraylist(Arrays.asList(result.split([*]);
public void onListItemClick(ListView父视图、视图v、最终整数位置、长id){
AlertDialog.Builder adb=新建AlertDialog.Builder(ThirdActivity.this);
adb.setItems(项,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int其中){
if(项[which].equals(“轨道位置”)){
...
}否则{
AlertDialog.Builder adb=新建AlertDialog.Builder(ThirdActivity.this);
adb.setTitle(“删除?”);
setMessage(“您确定要删除”+(字符串)lv.getItemAtPosition(位置));
最终int位置ToRemove=位置;
adb.setNegativeButton(“取消”,空);
adb.setPositiveButton(“确定”,新建AlertDialog.OnClickListener(){
public void onClick(DialogInterface dialog,final int其中){
新线程(){
公开募捐{
试一试{
httpclient=新的DefaultHttpClient();
httppost=新的httppost(“http://www.kryptoquest.com/tracker/remove.php");
nameValuePairs=新的ArrayList(2);
Log.d(“12345678”,用户);
添加(新的BasicNameValuePair(“Targetname”,(String)lv.getItemAtPosition(position));
添加(新的BasicNameValuePair(“用户名”,用户));
setEntity(新的UrlEncodedFormEntity(nameValuePairs));
response=httpclient.execute(httppost);
is=response.getEntity().getContent();
}捕获(例外e){
Log.e(“Log_标记”,“错误:+e.toString());
}
//将响应转换为字符串
试一试{
reader=新的BufferedReader(新的InputStreamReader(is,“iso-8859-1”),8);
sb=新的StringBuilder();
行=空;
而((line=reader.readLine())!=null){
sb.追加(第+行“\n”);
}
Log.d(“test”,sb.toString());
is.close();
结果=sb.toString();
runOnUiThread(新的Runnable()
{
公开募捐
{
Toast.makeText(ThirdActivity.this,result+lv.getItemAtPosition(position),Toast.LENGTH_LONG.show();
}
});
}捕获(例外e){
Log.e(“Log_标记”,“错误转换结果”+e.toString());
}
}
}.start();
stringdelete=(String)((lv.getAdapter()).getItem(which));
删除(删除);
friend.trimToSize();
adapter.notifyDataSetChanged();
}});
adb.show();
}
}  
});  
AlertDialog ad=adb.create();
广告秀();
}
它“
”是您提交给
适配器的数据集
,您应该使用
位置
,而不是
,后者
替换

String delete = (String) ((lv.getAdapter()).getItem(which));


请阅读onClickListener的文档
它不符合您的想法。检测数据后,您的ListView不会更新。它保存以前的数据。尝试刷新ListVIEW,在检测到数据之后……(我假设你是指<代码>位置>代码>)请考虑将你的<代码>线程<代码>提取到一个内部类或单独的文件中,以获得更多的可读性。在从“哪个”改变“位置”之后,它也不起作用。除此之外,我还将GTIETEM的参数从“哪个”改为“位置”。>>字符串删除=(字符串)((lv.getAdapter()).getItem(position));在我更改它们并再次运行之后,它在设备上被阻塞,并且它显示了指向if(item[position].equals(“Track Location”))的“Debug Current Instruction Pointer”(调试当前指令指针)
if(item[which].equals("Track Location"))
String delete = (String) ((lv.getAdapter()).getItem(which));
String delete = (String) ((lv.getAdapter()).getItem(position));