1

カスタムドロップダウンリスト項目でアンドロイドオートコンプリートテキストビューを使用したいと思います(文字列だけではありません)。これは特別な方法で機能します。arraylist で対応するアイテムを見つけ、アイテムをクリックすると、正しい文字列がテキスト ボックスに表示されます。ただし、ドロップダウン メニューには正しい文字列は表示されませんが、arraylist の最初の X エントリ (x は num_of_results) が表示されます。例: arraylist: a, b, c, aa, ab, ac 入力したテキスト: a my resaults: a, b, c, aa (結果の数が正しいことに注意してください) b をクリックすると、テキストビューは aa ( 2番目の結果)

私が推測するように、アダプターまたは customAutoComplete クラスに問題があります。これが私の CustomAutoCompleteView クラスです。

public class CustomAutoCompleteView extends AutoCompleteTextView {


public CustomAutoCompleteView(Context context) {
    super(context);
}

public CustomAutoCompleteView(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public CustomAutoCompleteView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

@Override
public boolean enoughToFilter() { 
    return true;
}



protected void onFocusChanged (boolean focused, int direction, Rect previouslyFocusedRect) 
{
    if(focused)
        performFiltering("", 0);
    super.onFocusChanged(focused, direction, previouslyFocusedRect);
}

そして、これは私のリストアダプターです:

public class ListAdapter extends ArrayAdapter<StopData> {

public ListAdapter(Context context, int textViewResourceId) {
    super(context, textViewResourceId);
    // TODO Auto-generated constructor stub
}

private List<StopData> stops;

public ListAdapter(Context context, int resource, List<StopData> stops) {

    super(context, resource, stops);

    this.stops = stops;

}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    View v = convertView;

    if (v == null) {

        LayoutInflater vi;
        vi = LayoutInflater.from(getContext());
        v = vi.inflate(R.layout.megalloelem, null);

    }

    StopData p = stops.get(position);

    if (p != null) {

        TextView stopname = (TextView) v.findViewById(R.id.megallo);

        if (stopname != null) {
            stopname.setText(p.name);
        }
    }

    return v;

}

getView 関数はすでに「間違った」インデックスを取得しているため、問題はありません (のみ)。元の配列リストから結果のインデックスを取得する方法はありますか? よろしくお願いします。

4

1 に答える 1

1

使用する

StopData p = getItem(position);

それ以外の

StopData p = stops.get(position);

これは、アダプタがフィルタリングを処理し、正しいアイテムを返すためです。

于 2013-04-30T08:51:27.320 に答える