2013-12-09 9 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

はなく、なぜ私に尋ねるが、AutoCompleteTextViewのドロップダウンリストへのインデックスを相対保持OnItemClickListener.onItemClick方法で引数positionしないでくださいあなたのアダプタ配列の位置(あなたのケースでは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

あなたの 'ArrayAdapter's'型がオブジェクトであれば、' Object object =(Object)parent.getItemAtPosition(position); ' – surfer190

+1

を割り当てることができます。 私は元のポスターと同じ問題があります。 – 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

あなたがドン」完全なコードセットが含まれていますが、regionTはリスナーを設定する正しいオブジェクトではない可能性があります。 ListActivityを使用していますか? –

関連する問題