Android 如何更改AlertDialog中的值?
只要一个Android 如何更改AlertDialog中的值?,android,android-listview,textview,android-alertdialog,Android,Android Listview,Textview,Android Alertdialog,只要一个EditText和ListView很难理解,我就尝试了另一种解决方案:一个ListView和TextView一起,当你点击一个,我就可以用一个监听器(父ListView上的一个onimclicklistener)我打开一个警报对话框 问题:当我按下警报对话框上的OK按钮时,我希望聚焦的文本视图获取警报对话框的编辑文本的文本值,但它不起作用,他保留相同的文本值。关于活动: listView.setOnItemClickListener(new OnItemClickList
EditText
和ListView
很难理解,我就尝试了另一种解决方案:一个ListView
和TextView
一起,当你点击一个,我就可以用一个监听器(父ListView
上的一个onimclicklistener
)我打开一个警报对话框
问题:当我按下警报对话框
上的OK按钮时,我希望聚焦的文本视图
获取警报对话框的编辑文本
的文本值,但它不起作用,他保留相同的文本值。关于活动:
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.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共链接(适配器视图a、视图v、内部位置、长id){
InputMethodManager imm=(InputMethodManager)getSystemService(Context.INPUT\u方法\u服务);
imm.toggleSoftInput(InputMethodManager.SHOW\u强制,0);
id++;
t=新文本视图(活动);
t=(文本视图)v;
AlertDialog.Builder alert=新建AlertDialog.Builder(活动);
警报。设置标题(“标题”);
警报。设置消息(“消息”);
//设置EditText视图以获取用户输入
最终编辑文本输入=新编辑文本(活动);
input.setText(t.getText());
alert.setView(输入);
alert.setPositiveButton(“确定”,新的DialogInterface.OnClickListener(){
public void onClick(对话框接口对话框,int whichButton){
//改变你的生活,改变你的生活
InputMethodManager imm=(InputMethodManager)getSystemService(Context.INPUT\u方法\u服务);
imm.toggleSoftInput(InputMethodManager.HIDE\u不总是,0);
t、 setText(input.getText());
System.out.println(“输入前卫:+t.getText());
}
});
alert.setNegativeButton(“取消”,新建DialogInterface.OnClickListener()){
public void onClick(对话框接口对话框,int whichButton){
//取消了。
}
});
alert.show();
}
});
我想这个代码足够让你知道我的代码有什么问题。只是想让你知道:
和t(ListView
)被声明为活动类上的私有变量TextView
- 有一个
类可以自动构建适配器
列表文本视图
- 如果我在
侦听器上更改ListView
的值,它会工作,但在对话框alert listener中,它不会工作EditText
询问您是否需要更多信息。我不知道您是如何构建适配器的,因此我将猜测答案。您必须将文本放入适配器数据中(例如,在您提供给适配器的
ArrayList
中),并在适配器上调用notifyDataSetChanged()
//ArrayList field on which your adapter is based ?!?(if you used this)
private ArrayList<String> items;
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, final View v, int pos, long id){
AlertDialog.Builder alert = new AlertDialog.Builder(activity);
alert.setTitle("Title");
alert.setMessage("Message");
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) {
items.set(pos, input.getText().toString());
adapterObject.notifyDataSetChanged(); // the adapter you set in the listView.setAdapter();
}
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// Canceled.
}
});
alert.show();
}
});
//适配器所基于的ArrayList字段?!?(如果您使用此选项)
私有ArrayList项;
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共视图单击(适配器视图a、最终视图v、内部位置、长id){
AlertDialog.Builder alert=新建AlertDialog.Builder(活动);
警报。设置标题(“标题”);
警报。设置消息(“消息”);
最终编辑文本输入=新编辑文本(活动);
input.setText(t.getText());
alert.setView(输入);
alert.setPositiveButton(“确定”,新的DialogInterface.OnClickListener(){
public void onClick(对话框接口对话框,int whichButton){
items.set(pos,input.getText().toString());
adapterObject.notifyDataSetChanged();//在listView.setAdapter()中设置的适配器;
}
});
alert.setNegativeButton(“取消”,新建DialogInterface.OnClickListener()){
public void onClick(对话框接口对话框,int whichButton){
//取消了。
}
});
alert.show();
}
});
我不知道您是如何构建适配器的,因此我将猜测答案。您必须将文本放入适配器数据中(例如,在您提供给适配器的ArrayList
中),并在适配器上调用notifyDataSetChanged()
//ArrayList field on which your adapter is based ?!?(if you used this)
private ArrayList<String> items;
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, final View v, int pos, long id){
AlertDialog.Builder alert = new AlertDialog.Builder(activity);
alert.setTitle("Title");
alert.setMessage("Message");
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) {
items.set(pos, input.getText().toString());
adapterObject.notifyDataSetChanged(); // the adapter you set in the listView.setAdapter();
}
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// Canceled.
}
});
alert.show();
}
});
//适配器所基于的ArrayList字段?!?(如果您使用此选项)
私有ArrayList项;
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共视图单击(适配器视图a、最终视图v、内部位置、长id){
AlertDialog.Builder alert=新建AlertDialog.Builder(活动);
警报。设置标题(“标题”);
警报。设置消息(“消息”);
最终编辑文本输入=新编辑文本(活动);
input.setText(t.getText());
alert.setView(输入);
alert.setPositiveButton(“确定”,新的DialogInterface.OnClickListener(){
public void onClick(对话框接口对话框,int whichButton){
items.set(pos,input.getText().toString());
adapterObject.notifyDataSetChanged();//在listView.setAdapter()中设置的适配器;
}
});
alert.setNegativeButton(“取消”,新建DialogInterface.OnClickListener()){
public void onClick(对话框接口对话框,int whichButton){
//取消了。
}
});
alert.show();
}
});
哦,我的上帝,你的权利。这就像我做了一个自定义适配器,但不知道如何使用它。无论如何,我从android开始。谢谢@SebastienFERRAND如果您只需要一行中包含TextView
,那么最好使用一个简单的ArrayAdapter