如何在用户单击 autocom 时显示 HashMap 键的值
How to display the value of a HashMap key when user clicks autocom
我是 android
开发和 Java
编程的新手。在我的代码中(如下所示),当用户 clicks
search
button
时, key
的 value
显示在 displayField TextView
中。但我想要它,以便当用户单击(触摸)AutoCompleteTextView
下拉项目上的项目时显示 value
,而不需要 click
search
button
.
import java.util.HashMap;
import java.util.Map;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends ActionBarActivity
{
Map<String, String> map = new HashMap<String, String>();
private EditText autocomplete_searchField;
private TextView displayField;
String note;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
autocomplete_searchField = (AutoCompleteTextView) findViewById(R.id.autocomplete_searchField);
// Get a reference to the AutoCompleteTextView in the layout
AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_searchField);
// Gets the string array
String[] music_note = getResources().getStringArray(R.array.music_notes_array);
// Creates the adapter and set it to the AutoCompleteTextView
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, musicNote);
textView.setAdapter(adapter);
displayField = (TextView) findViewById(R.id.displayField);
Button button = (Button)findViewById(R.id.button); // I want to completely remove this button eventually
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String note = autocomplete_searchField.getText().toString();
displayField.setText(map.get(note));
map.put("Doe", "a deer, a female deer");
map.put("Ray", "a drop of golden sun");
}
您需要将 ItemClickedListener 设置为 AutoCompleteTextView。
textView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View arg1, int position, long arg3) {
String note = autocomplete_searchField.getText().toString();
displayField.setText(map.get(note));
}
});
我不明白为什么你的代码中需要 autocomplete_searchField
,无论如何,如果我理解得很好,你只需要删除 button.setOnClickListener
并添加以下代码:
textView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
displayField.setText(map.get(adapterView.getItemAtPosition(position).toString()));
}
});
我是 android
开发和 Java
编程的新手。在我的代码中(如下所示),当用户 clicks
search
button
时, key
的 value
显示在 displayField TextView
中。但我想要它,以便当用户单击(触摸)AutoCompleteTextView
下拉项目上的项目时显示 value
,而不需要 click
search
button
.
import java.util.HashMap;
import java.util.Map;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends ActionBarActivity
{
Map<String, String> map = new HashMap<String, String>();
private EditText autocomplete_searchField;
private TextView displayField;
String note;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
autocomplete_searchField = (AutoCompleteTextView) findViewById(R.id.autocomplete_searchField);
// Get a reference to the AutoCompleteTextView in the layout
AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_searchField);
// Gets the string array
String[] music_note = getResources().getStringArray(R.array.music_notes_array);
// Creates the adapter and set it to the AutoCompleteTextView
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, musicNote);
textView.setAdapter(adapter);
displayField = (TextView) findViewById(R.id.displayField);
Button button = (Button)findViewById(R.id.button); // I want to completely remove this button eventually
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String note = autocomplete_searchField.getText().toString();
displayField.setText(map.get(note));
map.put("Doe", "a deer, a female deer");
map.put("Ray", "a drop of golden sun");
}
您需要将 ItemClickedListener 设置为 AutoCompleteTextView。
textView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View arg1, int position, long arg3) {
String note = autocomplete_searchField.getText().toString();
displayField.setText(map.get(note));
}
});
我不明白为什么你的代码中需要 autocomplete_searchField
,无论如何,如果我理解得很好,你只需要删除 button.setOnClickListener
并添加以下代码:
textView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
displayField.setText(map.get(adapterView.getItemAtPosition(position).toString()));
}
});