如何使用警报对话框更改微调器值? Android
How to change spinner value with alert dialog? Android
谁能告诉我如何在调用警报对话框后更改微调器值?单击 "Other..." 时,我正在调用警报对话框。我不知道如何用我在警报对话框中编写的新值替换 "Other..." 值。
final Spinner spinnerLessonDuration = (Spinner) findViewById(R.id.spinnerLessonDuration);
final ArrayAdapter<CharSequence> adapterLessonDuration = ArrayAdapter.createFromResource(this, R.array.lessonDuration, android.R.layout.simple_spinner_item);
adapterLessonDuration.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerLessonDuration.setAdapter(
new NothingSelectedSpinnerAdapter(
adapterLessonDuration,
R.layout.contact_spinner_row_nothing_selected_lesson_duration, this));
spinnerLessonDuration.setOnItemSelectedListener(new setOnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
System.out.println("2 " + spinnerLessonDuration.getSelectedItem());
if (spinnerLessonDuration.getSelectedItem() != null && "Other...".equals(spinnerLessonDuration.getSelectedItem().toString()))
{
View view1 = (LayoutInflater.from(MainActivity.this)).inflate(R.layout.user_input, null);
AlertDialog.Builder alertBuilder = new AlertDialog.Builder(MainActivity.this);
alertBuilder.setView(view1);
final EditText userInput = (EditText) view1.findViewById(R.id.userinput);
alertBuilder.setCancelable(true)
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//EditText valueView = (EditText) view1.findViewById(R.id.license_value); //here
if (userInput == null) Log.d("AA", "NULL");
else {
String value = userInput.getText().toString();
Log.i(value, "1");
}
}
});
Dialog dialog = alertBuilder.create();
dialog.show();
}
}
}
);
首先,您需要替换 ListAdapter 中的项目。
您可以删除然后插入一个新值,如下所示:
adapterLessonDuration.setNotifyOnChange(false);
adapterLessonDuration.remove(adapterLessonDuration.getItem(position));
adapterLessonDuration.insert(userInput, position);
adapterLessonDuration.notifyDataSetChanged();
制作位置参数最终.
注意:项目值更改后,您的条件 "Other...".equals(...) 将不再有效。
另一种方法 - 将 ArrayAdapter 覆盖为您自己的,或将自定义值放入其中 class,并在项目值更改后调用 notifyDataSetChanged()。
.xml file
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.testing.MainActivity" >
<Spinner
android:id="@+id/spinner1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</RelativeLayout>
.java file
public class MainActivity extends Activity {
Spinner spinner;
String[] name = { "Prakash", "Bhavin", "Chirag", "Kishan", "Sandy" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner = (Spinner) findViewById(R.id.spinner1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
getApplicationContext(),
android.R.layout.simple_dropdown_item_1line, name);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
AlertDialog.Builder builder = new AlertDialog.Builder(
MainActivity.this);
builder.setTitle("This is Selected Value " + name[position]);
builder.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(),
"Yes Button clicked...",
Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("No",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(),
"No Button clicked...",
Toast.LENGTH_SHORT).show();
}
});
builder.setNeutralButton("Help",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(),
"Help Button clicked...",
Toast.LENGTH_SHORT).show();
}
});
builder.show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
}
}
已修复!
问题是来自 R.array 的数组列表是不可变的 :)
ArrayList<CharSequence> testArrayList = new ArrayList<CharSequence>();
CharSequence[] strings = getResources().getTextArray(R.array.lessonDuration);
Collections.addAll(testArrayList, strings);
final Spinner spinnerLessonDuration = (Spinner) findViewById(R.id.spinnerLessonDuration);
final ArrayAdapter<CharSequence> adapterLessonDuration = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item, testArrayList);
谁能告诉我如何在调用警报对话框后更改微调器值?单击 "Other..." 时,我正在调用警报对话框。我不知道如何用我在警报对话框中编写的新值替换 "Other..." 值。
final Spinner spinnerLessonDuration = (Spinner) findViewById(R.id.spinnerLessonDuration);
final ArrayAdapter<CharSequence> adapterLessonDuration = ArrayAdapter.createFromResource(this, R.array.lessonDuration, android.R.layout.simple_spinner_item);
adapterLessonDuration.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerLessonDuration.setAdapter(
new NothingSelectedSpinnerAdapter(
adapterLessonDuration,
R.layout.contact_spinner_row_nothing_selected_lesson_duration, this));
spinnerLessonDuration.setOnItemSelectedListener(new setOnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
System.out.println("2 " + spinnerLessonDuration.getSelectedItem());
if (spinnerLessonDuration.getSelectedItem() != null && "Other...".equals(spinnerLessonDuration.getSelectedItem().toString()))
{
View view1 = (LayoutInflater.from(MainActivity.this)).inflate(R.layout.user_input, null);
AlertDialog.Builder alertBuilder = new AlertDialog.Builder(MainActivity.this);
alertBuilder.setView(view1);
final EditText userInput = (EditText) view1.findViewById(R.id.userinput);
alertBuilder.setCancelable(true)
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//EditText valueView = (EditText) view1.findViewById(R.id.license_value); //here
if (userInput == null) Log.d("AA", "NULL");
else {
String value = userInput.getText().toString();
Log.i(value, "1");
}
}
});
Dialog dialog = alertBuilder.create();
dialog.show();
}
}
}
);
首先,您需要替换 ListAdapter 中的项目。 您可以删除然后插入一个新值,如下所示:
adapterLessonDuration.setNotifyOnChange(false);
adapterLessonDuration.remove(adapterLessonDuration.getItem(position));
adapterLessonDuration.insert(userInput, position);
adapterLessonDuration.notifyDataSetChanged();
制作位置参数最终.
注意:项目值更改后,您的条件 "Other...".equals(...) 将不再有效。
另一种方法 - 将 ArrayAdapter 覆盖为您自己的,或将自定义值放入其中 class,并在项目值更改后调用 notifyDataSetChanged()。
.xml file
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.testing.MainActivity" >
<Spinner
android:id="@+id/spinner1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</RelativeLayout>
.java file
public class MainActivity extends Activity {
Spinner spinner;
String[] name = { "Prakash", "Bhavin", "Chirag", "Kishan", "Sandy" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner = (Spinner) findViewById(R.id.spinner1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
getApplicationContext(),
android.R.layout.simple_dropdown_item_1line, name);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
AlertDialog.Builder builder = new AlertDialog.Builder(
MainActivity.this);
builder.setTitle("This is Selected Value " + name[position]);
builder.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(),
"Yes Button clicked...",
Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("No",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(),
"No Button clicked...",
Toast.LENGTH_SHORT).show();
}
});
builder.setNeutralButton("Help",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(),
"Help Button clicked...",
Toast.LENGTH_SHORT).show();
}
});
builder.show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
}
}
已修复!
问题是来自 R.array 的数组列表是不可变的 :)
ArrayList<CharSequence> testArrayList = new ArrayList<CharSequence>();
CharSequence[] strings = getResources().getTextArray(R.array.lessonDuration);
Collections.addAll(testArrayList, strings);
final Spinner spinnerLessonDuration = (Spinner) findViewById(R.id.spinnerLessonDuration);
final ArrayAdapter<CharSequence> adapterLessonDuration = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item, testArrayList);