0
只要有ListView
的EditText
是很難搞清楚,我試過另一種解決方案:一個ListView
與TextViews
,當你點擊一個,我趕上聚焦TextView
向監聽器(父ListView
一個OnItemClickListener
)和我開一個AlertDialog
。如何從AlertDialog中更改值?
ISSUE:當我按下了AlertDialog
OK按鈕,我想聚焦TextView
得到的警告對話框中的EditText
的文本值,但它不工作,他保持相同的文本值。 On activity:
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
和噸(TextView
)被聲明爲在活動類私有變量- 有一個
Adapter
類,如果我改變自動構建TextView
列表 ListView
偵聽器上的EditText
的值,它可以工作,但在對話框警報偵聽器中,它不會。
詢問您是否需要更多信息。
哦,我的天啊你的權利。這就像我做了一個自定義適配器,但不知道如何使用它。無論如何,我開始在Android上。謝謝 ! – 2012-03-08 06:41:58
@SebastienFERRAND如果你想要的是一個'TextView'一個排了,你會用一個簡單的'ArrayAdapter'更好。自定義適配器適用於您想要自定義行佈局或具有更復雜的數據結構。 –
Luksprog
2012-03-08 06:47:37
是啊,你是對的,謝謝你的建議,但我需要它在未來更加複雜 – 2012-03-08 06:57:38