0

私はすでにインターネット上で多くを検索しましたが、私の問題は何も見つかりませんでした。私は自分のアダプタを持っていて、最後にアイテムを押したときにアプリケーションがクラッシュするが、他のすべてのアイテムがうまく動作する理由はわからない。アダプターの最後のアイテムを削除しないでください

お願いします。私のコードザッツ

holder.relativeLayout.setOnLongClickListener(new View.OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View view) { 
      String click = finalHolder.txtTitle.getText().toString(); 
      SharedPreferences s = context.getSharedPreferences("Favs", 0); 
      String last = s.getString("fav", ""); 
      if (!last.contains(";")) { 
        SharedPreferences so = context.getSharedPreferences("Favs", 0); 
        String lastpl = so.getString("fav", ""); 
        lastpl = lastpl.replace(lastpl, ""); 
        SharedPreferences sp8 = context.getSharedPreferences("Favs", 0); 
        SharedPreferences.Editor ed = sp8.edit(); 
        ed.putString("fav", lastpl); 
        ed.apply(); 
        lv = lastpl; 
       sprüche = new String[]{"Keine Favoriten vorhanden"}; 
       finalHolder.btn.setBackground(context.getResources().getDrawable(transparent)); 
       } 
       else { 
       String[] hui; 
       hui = last.split(";"); 
       if (!hui[0].equals(click)) { 
         SharedPreferences so = context.getSharedPreferences("Favs", 0); 
         String lastpl = so.getString("fav", ""); 
         lastpl = lastpl.replace(";" + click, ""); 
         SharedPreferences sp8 = context.getSharedPreferences("Favs", 0); 
         SharedPreferences.Editor ed = sp8.edit(); 
         ed.putString("fav", lastpl); 
         ed.apply(); 
         lv = lastpl; 
         sprüche = lv.split(";"); 
       } else { 
        SharedPreferences so = context.getSharedPreferences("Favs", 0); 
        String lastpl = so.getString("fav", ""); 
        lastpl = lastpl.replace(click+";", ""); 
        SharedPreferences sp8 = context.getSharedPreferences("Favs", 0); 
        SharedPreferences.Editor ed = sp8.edit(); 
        ed.putString("fav", lastpl); 
        ed.apply(); 
        lv = lastpl; 
        sprüche = lv.split(";"); 
       } 
      } 
       rowItems = new ArrayList<Liste3>(); 
       for (int ii = 0; ii < sprüche.length; ii++) { 
        Liste3 item = new Liste3(sprüche[ii]); 
        rowItems.add(item); 
       } 
       adapter.notifyDataSetChanged(); 
       if (click.equals(lastplay)) { 
        ui(); 
        favorite = false; 
       } 
      return false; 
     } 
    }); 

「最後は、」1つの文字列に保存されたリストビューからすべての項目があります。 "rowitems"は自分のリストです。

Liste3:

public class Liste3 { 
private String title; 

public Liste3(String title) { 
    this.title = title; 

} 
public String getTitle() { 
    return title; 
} 
public void setTitle(String title) { 
    this.title = title; 
} 
@Override 
public String toString() { 
    return title; 
} 
} 

Logcat:

致命的な例外:メイン プロセス:de.kruemelopment.org.lustigewitze、PID:9288 java.lang.IndexOutOfBoundsException:ランキング:1、サイズ:1 at java.util.ArrayList.get(ArrayList.java:411) at de.kruemelopment.org.lustigewitze.k.getItem(不明なソース) at de.kruemelopment.org.lustigewitze.k.getItemId android.widget.AbsListView.showContextMenuForChild(AbsListView.java:4293)で(不明なソース)android.widget.AbsListView.showContextMenuForChildInternal(AbsListView.java:4303)で アンドロイドで.view.View.showContextMenu(View.java:6423) android.view.View.performLongClickInternal(View.java:6342) at android.view.View.performLongClick(View.java:6296) at android.view .View.performLongClick(View.java:6314) android.view.View $ CheckForLongPress.run(View.java:23721) (android.os.Handler.handleCallback(Handler.java:751)) はandroid.osです。 .Handler.disp atchMessage(Handler.java:95) android.os.Looper.loop(Looper.java:154) (android.app.ActivityThread.main(ActivityThread.java:6776) at java.lang.reflect.Method)にあります。 com.android.internal.os.ZygoteInit.mainでcom.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1518) で を(ネイティブメソッド)を呼び出す(ZygoteInit.java:1408)

完全アダプタザッツ

public class startadapter extends BaseAdapter { 
Context context; 
List<Liste3> rowItems; 


public startadapter(Context context, List<Liste3> items) { 
    this.context = context; 
    this.rowItems = items; 
} 

/*private view holder class*/ 
private class ViewHolder { 
    TextView txtTitle; 
    Button btn; 
    RelativeLayout relativeLayout; 
} 

public View getView(final int position, View convertView, ViewGroup parent) { 
    ViewHolder holder = null; 

    LayoutInflater mInflater = (LayoutInflater) 
      context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
    if (convertView == null) { 
     convertView = mInflater.inflate(R.layout.liste, null); 
     holder = new ViewHolder(); 
     holder.txtTitle = (TextView) convertView.findViewById(R.id.textView9); 
     holder.btn=(Button) convertView.findViewById(R.id.button3); 
     holder.relativeLayout=(RelativeLayout) convertView.findViewById(R.id.relativ); 

     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 
    final Liste3 rowItem = (Liste3) getItem(position); 
    holder.txtTitle.setText(rowItem.getTitle()); 
    if (!rowItem.getTitle().equals("Keine Favoriten vorhanden")) { 
     holder.btn.setBackground(context.getResources().getDrawable(ic_menu_share)); 
    } 
    final ViewHolder finalHolder1 = holder; 
    holder.btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (!rowItem.getTitle().equals("Keine Favoriten vorhanden")) { 
       int position = 0; 
       String he = finalHolder1.txtTitle.getText().toString(); 
       for (int in = 0; in < spr.length; in++) { 
        if (spr[in].contains(he)) { 
         position = in; 
        } 
       } 
       File k = new File(context.getExternalFilesDir(null), he+".mp3"); 
       if (k.exists()) { 
        k.delete(); 
        try { 
         k.createNewFile(); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 
       } 
       InputStream in = context.getResources().openRawResource(sp[position]); 
       FileOutputStream out = null; 
       try { 
        out = new FileOutputStream(k); 
       } catch (FileNotFoundException e) { 
        e.printStackTrace(); 
       } 
       byte[] buff = new byte[1024]; 
       int read = 0; 

       try { 
        while ((read = in.read(buff)) > 0) { 
         out.write(buff, 0, read); 
        } 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } finally { 
        try { 
         in.close(); 
         out.close(); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 

       } 
       Uri uri=Uri.fromFile(k); 
       Intent share=new Intent(Intent.ACTION_SEND); 
       share.setType("audio/mp3"); 
       share.putExtra(Intent.EXTRA_STREAM,uri); 
       context.startActivity(Intent.createChooser(share,"Witz teilen über...")); 
      } 
     } 
    }); 
    final ViewHolder finalHolder = holder; 
    holder.relativeLayout.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      String he = finalHolder.txtTitle.getText().toString(); 
      lastplay=he; 
      favorite=true; 
      u(); 
      SharedPreferences s = context.getSharedPreferences("Favs", 0); 
      String load = s.getString("fav", ""); 
      if (!load.isEmpty()) { 
       int position = 0; 
       for (int in = 0; in < spr.length; in++) { 
        if (spr[in].contains(he)) { 
         position = in; 
        } 
       } 
       if (i==1){ 
        witz.stop(); 
       } 
       witz = MediaPlayer.create(context, sp[position]); 
       witz.start(); 
       i=1; 
       witz.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
        @Override 
        public void onCompletion(MediaPlayer mediaPlayer) { 
         i=0; 
        } 
       }); 
      } 
     } 
    }); 
    holder.relativeLayout.setOnLongClickListener(new View.OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View view) { 
      String click = finalHolder.txtTitle.getText().toString(); 
      SharedPreferences s = context.getSharedPreferences("Favs", 0); 
      String last = s.getString("fav", ""); 
      if (!last.contains(";")) { 
        SharedPreferences so = context.getSharedPreferences("Favs", 0); 
        String lastpl = so.getString("fav", ""); 
        lastpl = lastpl.replace(lastpl, ""); 
        SharedPreferences sp8 = context.getSharedPreferences("Favs", 0); 
        SharedPreferences.Editor ed = sp8.edit(); 
        ed.putString("fav", lastpl); 
        ed.apply(); 
        lv = lastpl; 
       sprüche = new String[]{"Keine Favoriten vorhanden"}; 
       finalHolder.btn.setBackground(context.getResources().getDrawable(transparent)); 
       } 
       else { 
       String[] hui; 
       hui = last.split(";"); 
        if (!hui[0].equals(click)) { 
         SharedPreferences so = context.getSharedPreferences("Favs", 0); 
         String lastpl = so.getString("fav", ""); 
         lastpl = lastpl.replace(";" + click, ""); 
         SharedPreferences sp8 = context.getSharedPreferences("Favs", 0); 
         SharedPreferences.Editor ed = sp8.edit(); 
         ed.putString("fav", lastpl); 
         ed.apply(); 
         lv = lastpl; 
         sprüche = lv.split(";"); 
        } else { 
         SharedPreferences so = context.getSharedPreferences("Favs", 0); 
         String lastpl = so.getString("fav", ""); 
         lastpl = lastpl.replace(click + ";", ""); 
         SharedPreferences sp8 = context.getSharedPreferences("Favs", 0); 
         SharedPreferences.Editor ed = sp8.edit(); 
         ed.putString("fav", lastpl); 
         ed.apply(); 
         lv = lastpl; 
         sprüche = lv.split(";"); 
        } 
        rowItems = new ArrayList<Liste3>(); 
        for (int ii = 0; ii < sprüche.length; ii++) { 
         Liste3 item = new Liste3(sprüche[ii]); 
         rowItems.add(item); 
        } 
      } 
       adapter.notifyDataSetChanged(); 
       if (click.equals(lastplay)) { 
        ui(); 
        favorite = false; 
       } 
      return false; 
     } 
    }); 
    return convertView; 
} 

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

@Override 
public Object getItem(int position) { 
    return rowItems.get(position); 
} 

@Override 
public long getItemId(int position) { 
    return rowItems.indexOf(getItem(position)); 
} 
} 
+0

でコード

for (int ii = 0; ii < sprüche.length; ii++) { Liste3 item = new Liste3(sprüche[ii]); rowItems.add(item); } 

のあなたのこの作品を交換cat.ifログを確認する必要がありますか? – sascha10000

+0

アダプターのコードを教えてください – YoLo

+0

私はあなたが 'replace'ステートメントを使うと、それが"; "ゼロまたはゼロに非常に近い。だから、 'split'関数の後に"; "で分割するものはありません。空の配列が生成されます。その配列を解析しようとすると、存在しない配列の要素にアクセスしようとすると 'IndexOutOfBoundsException'が発生します。 –

答えて

0

は、あなたが共有することができますplzはlogcat?私はそれが束縛された問題のインデックスになると信じています。しかし、私ははい、あなたはListe3.javaの関連するコードを共有することができ

for (int ii = 0; ii <= sprüche.length-1; ii++) { 
       Liste3 item = new Liste3(sprüche[ii]); 
       rowItems.add(item); 
      } 
+0

ええ、それはIndexoutofbounsexceptionですインデックス:1サイズ:1 –

+0

あなたの例外はこのコードで生成されますか? 'for(int ii = 0; ii

+0

はい、それがクラッシュします –

関連する問題