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