Пока трудно определить EditText
с ListView
, я попробовал другое решение: A ListView
с TextViews
, и когда вы нажимаете на него, я ловлю сфокусированный TextView
со слушателем (OnItemClickListener
на родительском ListView
), и я открываю AlertDialog
.
ВЫПУСК : Когда я нажимаю кнопку OK на AlertDialog
, я хочу, чтобы сфокусированный TextView
получил текстовое значение диалогового окна предупреждения EditText
, но оно не работает, он сохраняет то же текстовое значение. По активности:
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int pos, long id){
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
id ++;
t = new TextView(activity);
t = (TextView) v;
AlertDialog.Builder alert = new AlertDialog.Builder(activity);
alert.setTitle("Title");
alert.setMessage("Message");
// Set an EditText view to get user input
final EditText input = new EditText(activity);
input.setText(t.getText());
alert.setView(input);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//Changer la valeur dans la base et dans la liste
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.HIDE_NOT_ALWAYS,0);
t.setText(input.getText());
System.out.println("input avant : " + t.getText());
}
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// Canceled.
}
});
alert.show();
}
});
Я думаю, этого кода достаточно, чтобы вы знали, что не так в моем коде. Просто чтобы вы знали:
ListView
и t (TextView
) объявлены как частные переменные в классе активности
- существует класс
Adapter
, который автоматически создает список TextView
- если я изменяю значение
EditText
на приемнике ListView
, это работает, но в приемнике предупреждений диалогового окна - нет.
Спросите, хотите ли вы больше информации.