2011-06-06 72 views
0

在我的应用程序中有一个listview。当用户点击一个项目时,会出现一个alertdialog。用户从对话框中选择项目“删除”,并从列表视图中删除项目。问题是,我的代码中listview的位置始终为空,所以remove命令非常奇怪。在下面的代码中,当用户在Alert对话框中单击Delete时,文件的行被读入一个数组中,并且我想删除在listview中选择的项目。为此,我使用onitemclick()的位置变量。Android listview item position

lv1.setOnItemClickListener(new OnItemClickListener() 
{ 
    @Override 
    public void onItemClick(AdapterView<?> a, View v, final int position, long id) { 

    Object o = lv1.getItemAtPosition(position); 
    keyword = o.toString(); 
    AlertDialog.Builder builder2 = new AlertDialog.Builder(Bind.this); 
     builder2.setTitle("Select"); 
     final CharSequence[] selection2 = select.toArray(new CharSequence[valasztas.size()]); 
     builder2.setItems(selection2, new DialogInterface.OnClickListener() 
     { 
      public void onClick(DialogInterface dialog, int item2) 
      {  
       if (selection2[item2].equals("Delete")) 
       { 
        try { 
         File rootdir = Environment.getExternalStorageDirectory(); 
         File yourFile = new File(rootdir, "tomato50.txt"); 
         FileReader filereader = new FileReader(yourFile); 
          BufferedReader br = new BufferedReader(filereader); 
          String line; 
          while((line = br.readLine()) != null) 
         { 
           assignArrT.add(line); 

         } 
           br.close(); 
        } 
         catch (IOException e) 
         { 
          e.printStackTrace(); 
         } 
       assignArrT.remove(position); //this is null 
+0

assignArrT在该行中为空,请检查原因。 – Egor 2011-06-06 17:47:31

回答

0

位置是一个int,它不能为空。如果您在该行上获得空指针,则它必须是空的assignArrT。

+0

不,它不是空的。但关键字不为空,只是位置。 – erdomester 2011-06-06 18:04:26

+0

'position'是一个int,它是一个原始类型,根据定义它不能为null。你是什​​么意思“它不是空的”?你有什么确切的问题?请发布logcat与堆栈跟踪。 – 2011-06-06 18:06:11