【问题标题】:How to display the value of a HashMap key when user clicks autocom用户单击 autocom 时如何显示 HashMap 键的值
【发布时间】:2015-06-10 13:15:29
【问题描述】:

我是 android 开发和 Java 编程的新手。在我的代码中(如下所示),当用户clickssearchbutton 时,keyvalue 显示在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");
}

【问题讨论】:

    标签: java android hashmap autocompletetextview


    【解决方案1】:

    我不明白为什么您的代码中需要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()));
    
        }
    
    });
    

    【讨论】:

    • 辛苦了!我很感激。
    • 很高兴为您提供帮助 :)
    • 现在唯一的问题是单击的下拉项在第一次单击时没有响应(这只会发生一次,当应用程序启动时),我必须重新输入单词并单击显示值之前的项目。关于如何解决这个问题的任何建议?我见过的大多数解决方案都是处理按钮,而不是 AutoCompleteTextView 下拉项。
    • 对不起,我没明白你的意思。你能告诉我你的代码或问题中的图片吗?
    • 我不得不将它创建为一个不同的问题,因为它与这个特定问题的主题并不完全相关。请在以下链接中找到问题并提供帮助。 stackoverflow.com/questions/30763879/…
    【解决方案2】:

    您需要将 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));
        }
    });
    

    【讨论】:

    • 我可以用 setOnItemClickListener(new AdapterView.OnItemClickListener() 方法替换 button.setOnClickListener(new View.OnClickListener() 方法吗?
    猜你喜欢
    • 1970-01-01
    • 2015-10-26
    • 2015-03-19
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    相关资源
    最近更新 更多