ボタンをクリックすると、mycodeはTextView、EditView、およびdeleteボタンを使用してテーブルに行を作成します。削除ボタンは、テーブルからの行(正常に実行されます)とNotes.class内のリストからの日付(問題)を削除するようにプログラムされています。このアクションを確認するには、リストのサイズを日付とともにカウントするテキストビューがあり、削除ボタンを押すと何も変更されません。申し訳ありませんが これは愚かな質問ですが、私は、Android :)ボタンをクリックして行のデータを削除するにはどうすればよいですか?
ボタンハンドラ
public void addButtonHandler(View view) {
TableLayout tl = (TableLayout) findViewById(R.id.subs_table);
TableRow tr = new TableRow(this);
tr.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
//get the date in string
String date = new SimpleDateFormat("dd-MM-yyyy").format(new Date());
//the TextView with the date
TextView tv = new TextView(this);
tv.setText(date);
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP , 18);
//editText with the type
final EditText et = new EditText(this);
TableRow.LayoutParams params = new TableRow.LayoutParams(getPx(50), ViewGroup.LayoutParams.WRAP_CONTENT);
params.setMargins(getPx(130),0,getPx(40),0);
et.setLayoutParams(params);
SharedPreferences prefs = getSharedPreferences(SubsPREFERENCES , MODE_PRIVATE); // get notes object
Gson gsonN = new Gson();
String jsonN = prefs.getString("DATES" , "");
final Notes notes = gsonN.fromJson(jsonN , Notes.class);
//button for deleting row
ImageButton imageButton = new ImageButton(this);
TableRow.LayoutParams imageParams = new TableRow.LayoutParams(50,70);
imageParams.setMargins(5 ,0 ,0 ,0);
imageButton.setLayoutParams(imageParams);
imageButton.setImageResource(R.drawable.ok);
imageButton.setClickable(true);
imageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ViewGroup parent = (ViewGroup) view.getParent();
ViewGroup gradnparent = (ViewGroup) parent.getParent();
gradnparent.removeView(parent);
notes.delete(tv.getText().toString()); // this does not seem to work
}
}
);
// Adding views in row
tr.addView(tv);
tr.addView(et);
tr.addView(imageButton);
// Adding row in table
tl.addView(tr, new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT
, TableLayout.LayoutParams.WRAP_CONTENT));
//add info in note
notes.addNote(date , et.getText().toString());
// saving the changes in notes
SharedPreferences sharedPreferences =getSharedPreferences(SubsPREFERENCES ,MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
String json1 = gsonN.toJson(notes);
editor.putString("DATES" , json1);
editor.apply();
//display the number of objects in list
TextView textView = (TextView) findViewById(R.id.textView);
textView.setText(String.valueOf(notes.getNum_dates()));
}
ノートクラス
package com.uni.notes;
public class Notes {
private ArrayList<String> list =new ArrayList<String>();
private ArrayList<String> type =new ArrayList<String>();
public Notes() {}
public int getNum_dates() {return list.size();}
public void addNote(String date ,String typeN) {
list.add(date);
type.add(typeN);
}
public String getDate (int pos){
return list.get(pos);
}
public String getType (int pos) {return type.get(pos);}
public void delete (String thing) {
for (String element : list){
if (element.equals(thing)){
list.remove(element);
}
}
}
}
これをデバッグすると、deleteメソッドは期待どおりの入力を受け取りますか? – Randy