Android 列表视图 OnItemClickListener

Android Listview OnItemClickListener

我开始学习如何根据以下教程使用 ListView 进行用户选择 http://www.androidhive.info/2012/09/android-adding-search-functionality-to-listview/ ,但我需要扩展它的功能以允许移动用户单击列表和 return edittext 上的值。不应在 ListView 中查看任何记录。 edittext 中的文本字符串将用于在 SQLITE 数据库中进行 SQL 搜索。

我在 post 中收到了 Agustín 提出的类似问题: Android ListView with onClick items 但我发现很难根据建议的答案成功重写代码。

package com.example.listviewtesting;

import java.util.ArrayList;
import java.util.HashMap;

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;

public class MainActivity extends Activity {

// List view
private ListView lv;

// Listview Adapter
ArrayAdapter<String> adapter;

// Search EditText
EditText inputSearch;


// ArrayList for Listview
ArrayList<HashMap<String, String>> productList;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Listview Data
    String products[] = {"Anita Chan Lai Ling Building",
            "Auxiliary Teaching Block",
            "BC Wing",
            "Block L",
            "Block Z",
            "CD Wing",
            "Chan Sui Wai Building",
            "Chan Tai Ho Building",
            "Cheung On Tak Lecture Theatre",
            "Choi Kai Yau Building",
            "Chow Yei Ching Building",
            "Chung Sze Yuen Building",
            "Communal Building",
            "Core A",
            "Core B",
            "Core C",
            "Core D",
            "Core E",
            "Core F",
            "Core G",
            "Core H",
            "Core J",
            "Core P",
            "Core Q",
            "Core R",
            "Core S",
            "Core T",
            "Core U",
            "Fong Shu Chuen Hall",
            "GH Podium Annexe",
            "GH Wing",
            "House of Innovation",
            "Jockey Club Auditorium",
            "Jockey Club Innovation Tower",
            "Kinmay W.Tang Building",
            "Lee Shau Kee Building",
            "Li Ka Shing Tower",
            "Lui Che Woo Building",
            "Mong Man Wai Building",
            "Ng Wing Hong Building",
            "Pao Yue Kong Library",
            "Realink Building",
            "Shaw Amenities Building",
            "Shaw Sports Complex",
            "Shirley Chan Building",
            "Stanley Ho Building",
            "Tang Ping Yuan Building",
            "Yip Kit Chuen Building"};

    lv = (ListView) findViewById(R.id.list_view);
    inputSearch = (EditText) findViewById(R.id.inputSearch);

    // Adding items to listview

    adapter = new ArrayAdapter(this, R.layout.list_item, R.id.product_name, products); 
    lv.setAdapter(adapter);


    /**
     * Enabling Search Filter
     * */

    lv.setOnItemClickListener(new OnItemClickListener(){


        @Override
        public void onItemClick(AdapterView<?>adapter,View v, int position){   
        String selectedProduct = products[position];
        inputSearch.setText(selectedProduct);
        }


        });

    inputSearch.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
            // When user changed the Text
            MainActivity.this.adapter.getFilter().filter(cs);   
        }

        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                int arg3) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable arg0) {
            // TODO Auto-generated method stub                          
        }
    });
}    
}

试试这个:

 // Adding items to listview
    adapter = new ArrayAdapter<String>(this, R.layout.list_item,    R.id.product_name, products);
    lv.setAdapter(adapter);

/**
 * Enabling Search Filter
 * */

//after this
  lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {

@Override
    public void onItemClick(AdapterView<?> parent, View view,int position, long id) {  
    String selectedProduct = lv.getItemAtPosition(position);
    inputSearch.setText(selectedProduct);
    }



});