0

DialogFragmentに表示されるSpinnerに、 list1list2の 2 つのリストを設定しました。リストが 2 つの異なる色で表示されるようにします。つまり、リスト 1 は青で、リスト 2 は赤で、ドロップダウン中に表示されます。これを動的に達成するにはどうすればよいですか?

public class AlertDialogFragment extends DialogFragment {

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    // Use the Builder class for convenient dialog construction
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    LayoutInflater inflater = getActivity().getLayoutInflater();

    View view = inflater.inflate(R.layout.dialog, null);

    Spinner spin;
    spin = (Spinner)view.findViewById(R.id.spinner1);

    List<String> list = new ArrayList<String>();
    list.add("Material 1");
    list.add("Material 2");
    list.add("Material 3");
    list.add("Material 4");
    list.add("Material 5");
    list.add("Material 6");

    //Second List
    List<String> list2 = new ArrayList<String>();
    list2.add("Mat 7");
    list2.add("Mat 8");
    list2.add("Mat 9");

    //Combined List
    List<String> listCombine = new ArrayList<String>();
    listCombine.addAll(list);
    listCombine.addAll(list2);

    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(getActivity(),
            android.R.layout.simple_spinner_item, listCombine); 

    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    spin.setAdapter(dataAdapter);

    builder
    .setTitle("Title")
    .setView(view)
    .setPositiveButton("Add", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   // FIRE ZE MISSILES!
               }
           })
           .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   // User cancelled the dialog
               }
           });
    // Create the AlertDialog object and return it
    return builder.create();
}
}
4

1 に答える 1

0

最も信頼できる方法は、赤と青の 2 つの異なるレイアウトを使用するカスタム アダプターを作成することです。次の 3 つのメソッドをオーバーライドする必要があります。

  • getViewTypeCount()2 を返し、アダプタに 2 つの異なる行レイアウトを期待するように指示します。
  • getItemViewType()この行が最初のリストにあるか 2 番目のリストにあるかを返します。
  • getDropDownView()getItemViewType()適切なレイアウトを呼び出して使用します。

または、それ自体をオーバーライドgetDropDownView()して、適切な色を変更することもできます。

于 2013-02-03T22:18:38.663 に答える