Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.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
Java OnClick错误IndexOutOfBoundsException Android_Java_Android_Android Listview_Onclick_Indexoutofboundsexception - Fatal编程技术网

Java OnClick错误IndexOutOfBoundsException Android

Java OnClick错误IndexOutOfBoundsException Android,java,android,android-listview,onclick,indexoutofboundsexception,Java,Android,Android Listview,Onclick,Indexoutofboundsexception,当我在listview中单击某个项目时,我的应用程序中出现错误。奇怪的是,这种情况并不总是发生,但有时会发生。当然,我需要永远修理它。日志cat显示: java.lang.IndexOutOfBoundsException: Invalid index 18, size is 0 at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255) at java.util.ArrayList.get(ArrayLis

当我在listview中单击某个项目时,我的应用程序中出现错误。奇怪的是,这种情况并不总是发生,但有时会发生。当然,我需要永远修理它。日志cat显示:

java.lang.IndexOutOfBoundsException: Invalid index 18, size is 0
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
at java.util.ArrayList.get(ArrayList.java:308)
at it.dd.multiplayerit.MainActivity$2.onItemClick(MainActivity.java:133)
at android.widget.AdapterView.performItemClick(AdapterView.java:298)
at android.widget.AbsListView.performItemClick(AbsListView.java:1113)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:2904)
at android.widget.AbsListView$3.run(AbsListView.java:3638)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5081)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:781)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
onClick方法:

lista.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        // getting values from selected ListItem
       String titoli = ((TextView) 
              view.findViewById(R.id.riga_listview_titolo)).getText().toString();

        // getting date values
        String data = ((TextView) 
               view.findViewById(R.id.riga_listview_data)).getText().toString();
        immagine = ((ImageView) view.findViewById(R.id.imageView1));

        // Starting new intent
        Intent in = new Intent(getApplicationContext(), SingleActivity.class);
        in.putExtra(TAG_TITOLI, titoli);
        // data
        in.putExtra(TAG_DATA, data);
        //links
        in.putExtra(TAG_LINKS, links.get(position));
        Log.w("Links", links.get(position) + "");

        in.putExtra(TAG_IMMAGINE, bitmap.get(position));
        startActivity(in);

    }
});
适配器:

public class ParsingArrayAdapter extends ArrayAdapter<String>{

    //riferimenti statici alle risorse e agli id
    private final static int LAYOUT = R.layout.riga_listview;
    private final static int TITOLO = R.id.riga_listview_titolo;
    private final static int DATA = R.id.riga_listview_data;
    private final static int CATEGORIA = R.id.riga_listview_categoria;
    private final static int IMMAGINE = R.id.imageView1;
    //links
   // private final static int LINKS = R.id.riga_listview_links;

    ArrayList<Bitmap> bitmap;


    ArrayList<String> links;
    ArrayList<String> titoli; //lista dei titoli

    ArrayList<String> data; //lista delle date
    ArrayList<String> categoria; //lista delle categorie

    Context c; //context
    LayoutInflater inflater; //layout inflater

    //ImageLoader imageLoader=new  ImageLoader(ParsingArrayAdapter.getApplicationContext());

    public ParsingArrayAdapter(Context context,ArrayList<String> titoli, ArrayList<Bitmap> bitmap, ArrayList<String> data, ArrayList<String> categoria)
    {
        super(context,TITOLO);
        this.c = context;
        this.titoli = titoli;
        //this.links = links;
        this.data = data;
        this.categoria = categoria;
        this.bitmap = bitmap;
        this.inflater = LayoutInflater.from(c);

        if (this.titoli.size() > this.bitmap.size()){
            Log.d("Array compare", "Titoli > Bitmap!"+ " " + titoli.size() + " " + bitmap.size()); 
            titoli.remove(titoli.size() - 1);
        }

        if (this.titoli.size() == this.bitmap.size())
            Log.d("Array compare", "Titoli = Bitmap!" + " " + titoli.size() + " " + bitmap.size());  

        if (this.titoli.size() > this.data.size())
            Log.d("Array compare", "Titoli > Data!"+ " " + titoli.size() + " " + data.size());
        if (this.titoli.size() == this.data.size())
            Log.d("Array compare", "Titoli = Bitmap!" + " " + titoli.size() + " " + data.size());

    }

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

        //return bitmap.size();//ritorno lunghezza lista ( = numero dei titoli)
    }


    //quando la lista richiede una view
    @SuppressLint("NewApi")
    @Override
    public View getView(int pos,View view,ViewGroup parent)
    {
        CacheRiga cache; //cache
        if(view==null)//se è la prima volta che viene richiesta la view
        {
            // creo la view ma non l'attacco alla lista in quanto devo ancora modificare
            // i testi delle textview
            view = inflater.inflate(LAYOUT, parent,false); 
            cache = new CacheRiga(); //inizializzo la cache
            cache.titolo = (TextView) view.findViewById(TITOLO); //collego titolo
            cache.dateArticoli = (TextView) view.findViewById(DATA); //collego la data
            cache.categoriatext = (TextView) view.findViewById(CATEGORIA); //collego la data

            //cache.linkstext = (TextView) view.findViewById(LINKS); //collego la data


            cache.immagini = (ImageView) view.findViewById(IMMAGINE);//collego descrizione


            view.setTag(cache);//collego view con cache
        }
        else
        {
            cache = (CacheRiga) view.getTag(); //altrimenti prendo la cache dalla view
        }
        if (this.titoli.size() > 0 && pos < this.titoli.size()){
            cache.titolo.setText(titoli.get(pos)); //imposto il titolo
        }

        /*if (this.links.size() > 0 && pos < this.links.size()){
            cache.linkstext.setText(links.get(pos)); //imposto il titolo
        }*/

        if (this.data.size() > 0 && pos < this.data.size()){
            cache.dateArticoli.setText(data.get(pos));       
       }
        cache.categoriatext.setText(categoria.get(pos));    
        cache.immagini.setImageBitmap(bitmap.get(pos));

        //ImageView iv = (ImageView) view.findViewById(IMMAGINE);
        //iv.setImageBitmap(getItem(pos));


        if (bitmap!=null){
            Log.d("Bitmap MP.it", "BitmapNOTnull");         
        }else{
            Log.d("Bitmap null MP.it", "Bitmapnull");    
        }

        if (data!=null){
            Log.d("Data", "Data NOT null");         
        }else{
            Log.d("Data", "Data null");    
        }


        return view;
    }

    private class CacheRiga { // classe per la cache delle righe
        public TextView titolo; // cache titolo
        public TextView dateArticoli; // cache data
        public TextView categoriatext; // cache categoria
        //public TextView linkstext;
        public ImageView immagini; // cache descrizione
    }




}

链接的大小为0。你确定你填充了它吗?你在哪里填充链接?显示你填充的数据code@ZouZou这是正确的。读取堆栈跟踪。数组长度为零。您可以访问零长度数组。是否需要其他内容?
public class ParsingArrayAdapter extends ArrayAdapter<String>{

    //riferimenti statici alle risorse e agli id
    private final static int LAYOUT = R.layout.riga_listview;
    private final static int TITOLO = R.id.riga_listview_titolo;
    private final static int DATA = R.id.riga_listview_data;
    private final static int CATEGORIA = R.id.riga_listview_categoria;
    private final static int IMMAGINE = R.id.imageView1;
    //links
   // private final static int LINKS = R.id.riga_listview_links;

    ArrayList<Bitmap> bitmap;


    ArrayList<String> links;
    ArrayList<String> titoli; //lista dei titoli

    ArrayList<String> data; //lista delle date
    ArrayList<String> categoria; //lista delle categorie

    Context c; //context
    LayoutInflater inflater; //layout inflater

    //ImageLoader imageLoader=new  ImageLoader(ParsingArrayAdapter.getApplicationContext());

    public ParsingArrayAdapter(Context context,ArrayList<String> titoli, ArrayList<Bitmap> bitmap, ArrayList<String> data, ArrayList<String> categoria)
    {
        super(context,TITOLO);
        this.c = context;
        this.titoli = titoli;
        //this.links = links;
        this.data = data;
        this.categoria = categoria;
        this.bitmap = bitmap;
        this.inflater = LayoutInflater.from(c);

        if (this.titoli.size() > this.bitmap.size()){
            Log.d("Array compare", "Titoli > Bitmap!"+ " " + titoli.size() + " " + bitmap.size()); 
            titoli.remove(titoli.size() - 1);
        }

        if (this.titoli.size() == this.bitmap.size())
            Log.d("Array compare", "Titoli = Bitmap!" + " " + titoli.size() + " " + bitmap.size());  

        if (this.titoli.size() > this.data.size())
            Log.d("Array compare", "Titoli > Data!"+ " " + titoli.size() + " " + data.size());
        if (this.titoli.size() == this.data.size())
            Log.d("Array compare", "Titoli = Bitmap!" + " " + titoli.size() + " " + data.size());

    }

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

        //return bitmap.size();//ritorno lunghezza lista ( = numero dei titoli)
    }


    //quando la lista richiede una view
    @SuppressLint("NewApi")
    @Override
    public View getView(int pos,View view,ViewGroup parent)
    {
        CacheRiga cache; //cache
        if(view==null)//se è la prima volta che viene richiesta la view
        {
            // creo la view ma non l'attacco alla lista in quanto devo ancora modificare
            // i testi delle textview
            view = inflater.inflate(LAYOUT, parent,false); 
            cache = new CacheRiga(); //inizializzo la cache
            cache.titolo = (TextView) view.findViewById(TITOLO); //collego titolo
            cache.dateArticoli = (TextView) view.findViewById(DATA); //collego la data
            cache.categoriatext = (TextView) view.findViewById(CATEGORIA); //collego la data

            //cache.linkstext = (TextView) view.findViewById(LINKS); //collego la data


            cache.immagini = (ImageView) view.findViewById(IMMAGINE);//collego descrizione


            view.setTag(cache);//collego view con cache
        }
        else
        {
            cache = (CacheRiga) view.getTag(); //altrimenti prendo la cache dalla view
        }
        if (this.titoli.size() > 0 && pos < this.titoli.size()){
            cache.titolo.setText(titoli.get(pos)); //imposto il titolo
        }

        /*if (this.links.size() > 0 && pos < this.links.size()){
            cache.linkstext.setText(links.get(pos)); //imposto il titolo
        }*/

        if (this.data.size() > 0 && pos < this.data.size()){
            cache.dateArticoli.setText(data.get(pos));       
       }
        cache.categoriatext.setText(categoria.get(pos));    
        cache.immagini.setImageBitmap(bitmap.get(pos));

        //ImageView iv = (ImageView) view.findViewById(IMMAGINE);
        //iv.setImageBitmap(getItem(pos));


        if (bitmap!=null){
            Log.d("Bitmap MP.it", "BitmapNOTnull");         
        }else{
            Log.d("Bitmap null MP.it", "Bitmapnull");    
        }

        if (data!=null){
            Log.d("Data", "Data NOT null");         
        }else{
            Log.d("Data", "Data null");    
        }


        return view;
    }

    private class CacheRiga { // classe per la cache delle righe
        public TextView titolo; // cache titolo
        public TextView dateArticoli; // cache data
        public TextView categoriatext; // cache categoria
        //public TextView linkstext;
        public ImageView immagini; // cache descrizione
    }




}