2013-12-09 10 views
7

एडाप्टर ठीक काम करता है, लेकिन मुझे समझ नहीं आता है क्यों OnItemClick में स्थिति हमेशा "0"AutoCompleteTextView OnItemClick स्थिति हमेशा होता है "0"

String[] regions = ct.getRegions(); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_dropdown_item_1line, regions); 
    regionT.setAdapter(adapter); 
    regionT.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

      // TODO Auto-generated method stub 
       int pos=position; 
     } 
    }); 

उत्तर

17

मुझे मत पूछो क्यों, लेकिन विधि OnItemClickListener.onItemClick में तर्क position रखती AutoCompleteTextView की ड्रॉपडाउन सूची के लिए सूचकांक रिश्तेदार नहीं, आपके एडाप्टर सरणी में स्थिति (आपके मामले में regions)!

तो, पता लगाने के लिए आइटम का असली position चीज़ें आवश्यक स्ट्रिंग ड्रॉपडाउन में चयनित हो जाते हैं और अनुकूलक सरणी में अपने सूचकांक लगता है:

String[] regions = ct.getRegions(); 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, regions); 
regionT.setAdapter(adapter); 
regionT.setOnItemClickListener(new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     String selected = (String) parent.getItemAtPosition(position); 
     int pos = Arrays.asList(regions).indexOf(selected); 
    } 
}); 
+1

यदि आपका 'ऐरेएडाप्टर' प्रकार एक ऑब्जेक्ट है तो भी बेहतर होगा, आप इसे ऑब्जेक्ट ऑब्जेक्ट = (ऑब्जेक्ट) parent.getItemAtPosition (position) के साथ असाइन कर सकते हैं; ' – surfer190

+1

स्थिति हमेशा 0 होती है, तो यह कैसे काम करता है? मेरे पास मूल पोस्टर के समान समस्या है। – user535927

-1

मैं एक साधारण उदाहरण में इस डाल दिया और इसे सही ढंग से काम करता है मेरे लिए। नीचे देखें:

package com.example.autocompletetv; 

import android.app.ListActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.Menu; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ArrayAdapter; 

public class AutoCompleteActivity extends ListActivity { 

    public static final String TAG = AutoCompleteActivity.class.getSimpleName(); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_auto_complete); 

     String[] regions = {"One", "Two", "Three", "Four", "Five"}; 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_dropdown_item_1line, regions); 
     this.setListAdapter(adapter); 

     this.getListView().setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       Log.i(TAG, "postion was " + position); 
      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.auto_complete, menu); 
     return true; 
    } 

} 

जब मैं क्लिक करें मैं:

12-09 19:13:30.617: I/AutoCompleteActivity(1883): postion was 2 
12-09 19:13:31.997: I/AutoCompleteActivity(1883): postion was 3 
12-09 19:13:34.687: I/AutoCompleteActivity(1883): postion was 4 
12-09 19:13:37.028: I/AutoCompleteActivity(1883): postion was 0 
+0

अजीब है कि यह मेरे एप्लिकेशन में काम नहीं करता है –

+0

आप डॉन ' टी कोड का पूरा सेट शामिल नहीं है, लेकिन यह हो सकता है कि क्षेत्र टी श्रोता सेट करने के लिए सही वस्तु नहीं है। क्या आप एक सूची सक्रियता का उपयोग कर रहे हैं? –

संबंधित मुद्दे