進一步修改setOnItemClickListener的選單事件, 除了「刪除」選項, 再添加「修改內容」讓User更新已輸入過的資料.
Activity_ExchangeRate.java
lv_shopping.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3)
{
intItemSelected = arg2;
value_shopping_icon = allarray_shopping_icon.get(arg2);
value_shopping_item = allarray_shopping_item.get(arg2);
value_shopping_nt = allarray_shopping_nt.get(arg2);
new AlertDialog.Builder(context)
.setTitle(R.string.str_dialog_shopping_title)
//.setMessage(R.string.delete)
.setItems(R.array.array_onitemclick, di_onclick)
.setNegativeButton(R.string.str_button_cancel, new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int whichButton)
{
}
})
.show();
}
});
}
在此的di_onclick是一個DialogInterface.OnClickListener物件, 用來實作setOnItemClickListener的選單事件, 故在程式中加入以下片段:
Activity_ExchangeRate.java
DialogInterface.OnClickListener di_onclick = new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
String[] aryShop = getResources().getStringArray(R.array.array_onitemclick);
switch(which)
{
case ID_MODIFY:
dailog_id_modify();
break;
case ID_DELETE:
dailog_id_delete();
break;
}
}
};
為「修改內容」這個選項新增function, 並於其內載入額外設計的layout, 使之佈局如右
並將User所修改的et_dialog_shopping_modify_item.getText().toString()及
et_dialog_shopping_modify_cash.getText().toString()值
存入資料庫欄位"fn_shopping_item"和
"fn_shopping_nt"
Activity_ExchangeRate.java
public void dailog_id_modify()
{
LayoutInflater factory = LayoutInflater.from(context);
view_shopping_modify = factory.inflate(R.layout.layout_dialog_shopping_modify, null);
et_dialog_shopping_modify_item = (EditText)view_shopping_modify.findViewById(R.id.et_dialog_shopping_modify_item);
et_dialog_shopping_modify_cash = (EditText)view_shopping_modify.findViewById(R.id.et_dialog_shopping_modify_cash);
et_dialog_shopping_modify_item.setText(value_shopping_item);
et_dialog_shopping_modify_cash.setText(value_shopping_nt);
new AlertDialog.Builder(context)
.setView(view_shopping_modify)
.setPositiveButton(R.string.str_button_save, new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int whichButton)
{
Cursor cursor_sqlite_table_listview_shopping = null;
try
{
cursor_sqlite_table_listview_shopping = dbHelper.select(tables[3], null, null, null, null, null, null);
cursor_sqlite_table_listview_shopping.moveToFirst();
String[] updateFields = {"fn_shopping_item", "fn_shopping_nt"};
String[] updateValues = {
et_dialog_shopping_modify_item.getText().toString(),
et_dialog_shopping_modify_cash.getText().toString()
};
String where = "fn_shopping_icon=?";
String[] whereValue =
{
value_shopping_icon
};
System.out.println("et_dialog_shopping_modify_item = "+et_dialog_shopping_modify_item.getText().toString());
System.out.println("et_dialog_shopping_modify_cash = "+et_dialog_shopping_modify_cash.getText().toString());
System.out.println("value_shopping_icon = "+value_shopping_icon);
dbHelper.update(tables[3], updateFields, updateValues, where, whereValue);
update_listview_shopping();
}
catch(Exception e)
{
System.out.println("821 Exception : case ID_MODIFY");
}
finally
{
cursor_sqlite_table_listview_shopping.close();
}
}
})
.setNegativeButton(R.string.str_button_cancel, new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int whichButton)
{
}
})
.show();
}
至於case ID_DELETE:
也記得刪除資料庫資料後在更新一次ListView
新增function:
Activity_ExchangeRate.java
public void dailog_id_delete()
{
new AlertDialog.Builder(context)
.setMessage("刪除資料「 "+value_shopping_item+" 」?")
.setPositiveButton(R.string.str_button_yes, new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int whichButton)
{
Cursor cursor_sqlite_table_listview_shopping = null;
try
{
cursor_sqlite_table_listview_shopping = dbHelper.select(tables[3], null, null, null, null, null, null);
String where = "fieldname_id=?";
cursor_sqlite_table_listview_shopping.moveToPosition(intItemSelected);
String[] whereValue =
{
cursor_sqlite_table_listview_shopping.getString(0)
};
dbHelper.delete(tables[3], where, whereValue);
update_listview_shopping();
}
catch(Exception e)
{
}
finally
{
cursor_sqlite_table_listview_shopping.close();
}
}
})
.setNegativeButton(R.string.str_button_cancel, new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int whichButton)
{
}
})
.show();
}


沒有留言:
張貼留言