08-07 11:49:08.960: E/AndroidRuntime(453): java.lang.ArrayIndexOutOfBoundsException
public class deletecustomer extends Activity{ private ListView listview;
String id[];
String cname[];
String ccontacter[];
String address[];
String city[];
String region[];
String postalcode[];
String telphone[];
String fax[];
String web[];
int i=0;
SqlHelpdemo db;
SQLiteDatabase sDatabase;
/* (non-Javadoc)
 * @see android.app.Activity#onCreate(android.os.Bundle)
 */
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.deletecustomer);
setTitle("删除客户");
final AlertDialog.Builder builder=new AlertDialog.Builder(this);
db=new SqlHelpdemo(getApplicationContext(), "store.db", null, 1);
sDatabase=db.getWritableDatabase();
listview=(ListView)findViewById(R.id.customerlist);
List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();
String select="select _id,comname,pername,addr,city,diqu,youbian,tel,chuanzhen,web from Customers";
Cursor cursor=sDatabase.rawQuery(select, null);
cursor.moveToFirst();
int count=cursor.getCount();
id=new String[count];
cname=new String[count];
ccontacter=new String[count];
address=new String[count];
city=new String[count];
region=new String[count];
postalcode=new String[count];
telphone=new String[count];
fax=new String[count];
web=new String[count];
do
{
try
{
id[i]=cursor.getString(0);
cname[i]=cursor.getString(1);
ccontacter[i]=cursor.getString(2);
address[i]=cursor.getString(3);
city[i]=cursor.getString(4);
region[i]=cursor.getString(5);
postalcode[i]=cursor.getString(6);
telphone[i]=cursor.getString(7);
fax[i]=cursor.getString(8);
web[i]=cursor.getString(9);
i++;
}catch(Exception e)
{

}
}while(cursor.moveToNext());
for(int i=0;i<cname.length;i++)
{
Map<String,Object> map=new HashMap<String,Object>();
map.put("id",id[i]);
map.put("cname", cname[i]);
map.put("ccontacter", ccontacter[i]);
map.put("address", address[i]);
map.put("city", city[i]);
map.put("region", region[i]);
map.put("postalcode", postalcode[i]);
map.put("telphone", telphone[i]);
map.put("fax", fax[i]);
map.put("web", web[i]);
list.add(map);
}
SimpleAdapter simpleadapter=new SimpleAdapter(this, list, R.layout.deletecustomeradapter, 
new String[]{"id","cname","ccontacter","address","city","region","postalcode","telphone",
"fax","web"}, new int []{R.id.d1,R.id.d2,R.id.d3,R.id.d4,R.id.d5,R.id.d6,R.id.d7,
R.id.d8,R.id.d9,R.id.d9,R.id.d10});
listview.setAdapter(simpleadapter);
listview.setOnItemClickListener(new OnItemClickListener()
{ @Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
for(int i=0;i<cname.length;i++)
{
if(arg2==i)
{
builder.setTitle("确认消息");
builder.setMessage("确认要删除该客户吗?");
final int j=i;
builder.setPositiveButton("确定", new OnClickListener()
{ @Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
sDatabase.execSQL("delete from Customers where comname='"+cname[j]+"'");
Intent intent=new Intent();
intent.setClass(deletecustomer.this, deletecustomer.class);
startActivity(intent);
finish();
}

}
);
builder.setNegativeButton("取消", new OnClickListener()
{ @Override
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
}

}
);
builder.create().show();
}
}
}

}
);
cursor.close();
db.close();
}
}
log说数组下标越界,我实在找不到,新手求大神指点啊

解决方案 »

  1.   

    发详细Log信息上来看看另外,这段cursor.moveToFirst();
     int count=cursor.getCount();
     id=new String[count];
     cname=new String[count];
     ccontacter=new String[count];
     address=new String[count];
     city=new String[count];
     region=new String[count];
     postalcode=new String[count];
     telphone=new String[count];
     fax=new String[count];
     web=new String[count];
    do
     {
     try
     {
     id[i]=cursor.getString(0);
     cname[i]=cursor.getString(1);
     ccontacter[i]=cursor.getString(2);
     address[i]=cursor.getString(3);
     city[i]=cursor.getString(4);
     region[i]=cursor.getString(5);
     postalcode[i]=cursor.getString(6);
     telphone[i]=cursor.getString(7);
     fax[i]=cursor.getString(8);
     web[i]=cursor.getString(9);
     i++;
     }catch(Exception e)
     { }
     }while(cursor.moveToNext());最好改一下,改成 int count=cursor.getCount();
     if(count>0
     {
     cursor.moveToFirst();
     id=new String[count];
     cname=new String[count];
     ccontacter=new String[count];
     address=new String[count];
     city=new String[count];
     region=new String[count];
     postalcode=new String[count];
     telphone=new String[count];
     fax=new String[count];
     web=new String[count];while(i<count)
    {
    id[i]=cursor.getString(0);
     cname[i]=cursor.getString(1);
     ccontacter[i]=cursor.getString(2);
     address[i]=cursor.getString(3);
     city[i]=cursor.getString(4);
     region[i]=cursor.getString(5);
     postalcode[i]=cursor.getString(6);
     telphone[i]=cursor.getString(7);
     fax[i]=cursor.getString(8);
     web[i]=cursor.getString(9);
     i++;
     cursor.moveToNext()
    }
    }
      

  2.   

    08-07 12:38:02.430: E/AndroidRuntime(477): FATAL EXCEPTION: main
    08-07 12:38:02.430: E/AndroidRuntime(477): java.lang.ArrayIndexOutOfBoundsException
    08-07 12:38:02.430: E/AndroidRuntime(477):  at android.widget.SimpleAdapter.bindView(SimpleAdapter.java:160)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at android.widget.SimpleAdapter.createViewFromResource(SimpleAdapter.java:126)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at android.widget.SimpleAdapter.getView(SimpleAdapter.java:114)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at android.widget.AbsListView.obtainView(AbsListView.java:1315)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at android.widget.ListView.onMeasure(ListView.java:1084)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at android.view.View.measure(View.java:8171)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:578)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:362)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at android.view.View.measure(View.java:8171)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at android.widget.HorizontalScrollView.measureChildWithMargins(HorizontalScrollView.java:988)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at android.widget.HorizontalScrollView.onMeasure(HorizontalScrollView.java:290)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at android.view.View.measure(View.java:8171)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at android.view.View.measure(View.java:8171)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:526)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:304)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at android.view.View.measure(View.java:8171)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at android.view.View.measure(View.java:8171)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at android.view.ViewRoot.performTraversals(ViewRoot.java:801)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at android.os.Handler.dispatchMessage(Handler.java:99)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at android.os.Looper.loop(Looper.java:123)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at android.app.ActivityThread.main(ActivityThread.java:4627)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at java.lang.reflect.Method.invokeNative(Native Method)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at java.lang.reflect.Method.invoke(Method.java:521)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    08-07 12:38:02.430: E/AndroidRuntime(477):  at dalvik.system.NativeStart.main(Native Method)
      

  3.   

    new int []{R.id.d1,R.id.d2,R.id.d3,R.id.d4,R.id.d5,R.id.d6,R.id.d7,
     R.id.d8,R.id.d9,R.id.d9,R.id.d10}这个地方错了,多写了一个R.id.d9,导致数组长度为11。new int []{R.id.d1,R.id.d2,R.id.d3,R.id.d4,R.id.d5,R.id.d6,R.id.d7,
     R.id.d8,R.id.d9,R.id.d10}