1

AutoCompleteTextView を使用して DialogBox を作成しようとしています。オートコンプリート リストとすべてを表示することもできます。問題は、ドロップダウン リストのビューをカスタマイズできないことです。

これは私がメイン アクティビティで行っていることです。

DialogBox DB = new DialogBox(MyActivity.this);
DB.createDialog();

そして、私が作成した別のクラスでは:

public DialogBox(Context c)
{
    context = c;
}

public void createDialog()
{

    AlertDialog.Builder builder = new AlertDialog.Builder(context);
    LayoutInflater inflater = ((Activity) context).getLayoutInflater();
    final View PopupLayout = inflater.inflate(R.layout.dialog_box, null);
    builder.setView(PopupLayout);

    //Autocomplete:
    final AutoCompleteTextView textView = (AutoCompleteTextView) PopupLayout.findViewById(R.id.autocomplete_companies);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, R.layout.dialog_box, R.id.autocomplete_companies, COMPANIES);
    textView.setAdapter(adapter);
}

R.layout.dialog_box を変更しようとすると、NullPointerExceptions またはその他のエラーが発生します。

編集:これは私のxmlです

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >

<ImageView
    android:layout_width="match_parent"
    android:layout_height="64dp"
    android:background="#FFFFBB33"
    android:contentDescription="@string/app_name"
    android:scaleType="center" />

<AutoCompleteTextView
    android:id="@+id/autocomplete_companies"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="4dp"
    android:layout_marginRight="4dp"
    android:hint="Company Name" />

<EditText
    android:id="@+id/username"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="4dp"
    android:layout_marginLeft="4dp"
    android:layout_marginRight="4dp"
    android:layout_marginTop="16dp"
    android:hint="@string/username"
    android:inputType="textEmailAddress" />

<EditText
    android:id="@+id/password"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="16dp"
    android:layout_marginLeft="4dp"
    android:layout_marginRight="4dp"
    android:layout_marginTop="4dp"
    android:fontFamily="sans-serif"
    android:hint="@string/password"
    android:inputType="textPassword" />

私が間違っていることは何か分かりますか??

4

1 に答える 1

0

アダプターをサブクラス化します。以下が機能しています:

    GoSuggestionCursorAdapter adapter = new GoSuggestionCursorAdapter(this, R.layout.autocomplete_line, null, from, to);

と...

public class GoSuggestionCursorAdapter extends SimpleCursorAdapter {

    public static final String GO_SUGGESTION_ID = "_id";
    public static final String GO_SUGGESTION_TITLE = "SUGGESTION_TITLE";
    public static final String GO_SUGGESTION_URL = "SUGGESTION_URL";
    public static final String GO_SUGGESTION_TYPE = "SUGGESTION_TYPE";

    public GoSuggestionCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to) {      
        super(context, layout, c, from, to);        
    }

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

        View superView = super.getView(position, convertView, parent);

        ImageView iconView = (ImageView) superView.findViewById(R.id.AutocompleteImageView);

        int resultType;
        try {           
            resultType = Integer.parseInt(getCursor().getString(getCursor().getColumnIndex(GO_SUGGESTION_TYPE)));
        } catch (Exception e) {
            resultType = 0;
        }

        switch (resultType) {
        case 1: iconView.setImageResource(R.drawable.ic_content_purchased); break;
        case 2: iconView.setImageResource(R.drawable.ic_content_blocked); break;
        case 3: iconView.setImageResource(R.drawable.ic_content_expired); break;
        default: break;
        }

        return superView;
    }



}
于 2012-10-31T14:54:27.743 に答える