2013-04-05 8 views
8

は私のコードです:オートコンプリートTextviewの選択項目シンプルなTextviewとして表示しますか?私はdatabase.Iからいくつかの名前は、私はオートコンプリートtextview.Hereから選択のTextViewに名前を表示したい示しているオートコンプリートのTextViewを使用しています

ArrayList<String> s1 = new ArrayList<String>(); 

     for (StudentInfo cn : studentInfo) { 
      s1.add(cn.getName()); 
     } 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line,s1); 
     a1.setThreshold(1); 
     a1.setAdapter(adapter); 

a1.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
        long arg3) { 
    } 
     }); 
+0

あなたの中にA1が何でありますかコードとあなたはtextviewまたはedittextで選択したアイテムを撮影したいですか? –

+0

a1はオートコンプリートのテキストビューであり、選択したアイテムをテキストビューに表示したい。 – bhoot4242

+0

オートコンプリートテキストビューに自動的に設定されたアイテムを選択すると、オートコンプリートテキストビューになります。それのために余分な方法を含める必要はありません。ここをクリック:http://dj-android.blogspot.in/2013/04/android-autocompletetextview-inside.html –

答えて

3

あなたs1は、この意志はあなたを助けdatabase

a1.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int position, 
        long arg3) { 
      Log.d("your selected item",""+s1.get(position)); 
      //s1.get(position) is name selected from autocompletetextview 
      // now you can show the value on textview. 
    } 
     }); 

の希望から、すべての名前が含まれています

+6

NB!この例では、position引数はs1内の位置ではなく、選択時にオートコンプリートが表示されたときのインデックスです。 –

3

ビューオブジェクトからarg1 Stringの値を取得します。 AutoCompleteTextViewに提供されたArrayListから、このStringを使用してアイテムの位置を取得します。

あなたの場合、コードは次のようになります。

int selectedPos = s1.indexOf((String)((TextView)arg1).getText());

selectedPosは、指定されたArrayList内の文字列の位置です。私はarg0に、親としてonItemClickにデフォルトのパラメータ名を変更した、ユーザ定義のデータ型を使用して、関連list.followingコードの値は私のため

@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, 
long arg3) { 
    int selectedPos = getYourList().indexOf((((TextView)view).getText()).toString()); 
    SomeDAO dao = getSomeDaoList().get(selectedPos); 
    //do your code 
} 

注意を働いた設定オートコンプリートの選択から項目を選択し取得するために

1

ARG1ビュー、arg2に位置& SomeDAOはこのようにそれを試してみてくださいユーザ定義データ型

7

です:

AutoCompleteTextView a1 = (AutoCompleteTextView) findViewById(...); 

StudentInfo[] s1 = studentInfo.toArray(new StudentInfo[studentInfo.size()]); 

ArrayAdapter<StudentInfo> adapter = new ArrayAdapter<StudentInfo>(this, android.R.layout.simple_dropdown_item_1line, s1); 
a1.setAdapter(adapter); 
a1.setOnItemClickListener(new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> parent, View arg1, int position, long arg3) { 
     Object item = parent.getItemAtPosition(position); 
     if (item instanceof StudentInfo){ 
     StudentInfo student=(StudentInfo) item; 
      doSomethingWith(student); 
     } 
    } 
}); 

ArrayAdapte rはStudentInfoのtoString()メソッドを使用して表示されたテキストを生成するので、素敵なtoStringメソッドを実装する必要があります。

このように、この種の実装はどのオブジェクトタイプにも適用できます。

ところで:私はandroid.R.layout.simple_spinner_dropdown_item代わりにandroid.R.layout.simple_dropdown_item_1lineを好むモデルクラス(この場合StudenInfo)ためtoStringメソッドをオーバーライド

+0

それはドロップダウンを表示していない、あなたが私を助けることができる。 – Shivang

+1

parent.getItemAtPosition(position);表示されたリストの位置を与えるので、位置が元のデータと一致せず、希望の出力が得られない – Shivang

1

は良い考えではありません!
だけ選択した項目のテキストを取得したい場合は、このコードを使用します。

autoCompleteView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       String selectedItem = (String) parent.getItemAtPosition(position); 
       // here is your selected item 
      } 
     }); 
0

使用した親位置はステファン・リヒターに「0」

txt_search.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View arg1, int position, long id) { 
      Object item = parent.getItemAtPosition(0); 
      if (item instanceof MYData{ 
       MYData data=(MYData) item; 
       String dd = data.getName(); 
      } 
     } 
    }); 
1

感謝です!私はあなたが、アダプタを構築するとき、直接List<T>を使用することが可能であることを追加したいと思います:

AutoCompleteTextView autoCompleteTextView = dialogView.findViewById(R.id.autoComplete); 
      // Where mStudentsInfo is List<StudentInfo> 
      ArrayAdapter<StudentInfo> adapter = new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line, mStudentsInfo); 
      autoCompleteTextView.setAdapter(adapter); 
      autoCompleteTextView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
        Object item = parent.getItemAtPosition(position); 
        if (item instanceof StudentInfo) { 
         StudentInfo studentInfo = (StudentInfo) item; 
         // do something with the studentInfo object 
        } 
       } 
      }); 

StudentInfo.classtoString()メソッドをオーバーライドすることを忘れないでください:

public class StudentInfo { 

.... 

    @Override 
    public String toString() { 
     return studentName; 
    } 
} 
関連する問題