我想从数组中删除数组索引,然后使用我的新数组重新加载listView,然后将字符串写入android中的现有文件。我使用以下代码:
OnItemLongClickListener longClickListener = new OnItemLongClickListener(){
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int position, long arg3) {
itemPosition = position;
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
alertDialogBuilder.setTitle("Warning");
alertDialogBuilder
.setMessage("Are you sure?")
.setCancelable(false)
.setPositiveButton("Yes",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
ArrayList<String> itemsList = new ArrayList<String>();
for(int i=0; i<items.length; i++){
itemsList.add(items[i]);
}
itemsList.remove(itemPosition);
items = new String[itemsList.size()];
for(int i=0; i<itemsList.size(); i++){
items[i] = itemsList.get(i);
}
adapter.notifyDataSetChanged();
String newData = "";
for(int i=0; i<items.length; i++){
newData = newData+items[i];
if(i < items.length-1){
newData = newData+"NEXTLINE";
}
}
// write string to existing file
try {
fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(newData.getBytes());
fos.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
})
.setNegativeButton("No",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
// if this button is clicked, just close
// the dialog box and do nothing
dialog.cancel();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
return true;
}
};
当我在提醒时单击是然后我的应用程序没有响应,一段时间后我的手机要求杀死应用程序?任何人都可以告诉我这个代码有什么问题吗?提前谢谢。
答案 0 :(得分:1)
问题在于遵循代码的瑕疵......如果您的列表有太大的延迟,并且您正在将它循环三次,并且介于两者之间,您也会在列表中刷新。
ArrayList<String> itemsList = new ArrayList<String>();
for(int i=0; i<items.length; i++){
itemsList.add(items[i]);
}
itemsList.remove(itemPosition);
items = new String[itemsList.size()];
for(int i=0; i<itemsList.size(); i++){
items[i] = itemsList.get(i);
}
adapter.notifyDataSetChanged();
String newData = "";
for(int i=0; i<items.length; i++){
newData = newData+items[i];
if(i < items.length-1){
newData = newData+"NEXTLINE";
}
尝试调试并减少此次点击的代码和循环...