четверг, 15 ноября 2012 г.

Создание Custom Dialog (часть 4. Spinner)

Добавим спиннер в диалог
В файл main_dialog.xml добавим разметку спиннера в RelativeLayout

< Spinner
                android:id="@+id/spinner"
                android:layout_below="@+id/button_confirm"
                android:layout_marginTop="10dp"
                android:layout_alignRight="@+id/button_confirm"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                
                 />      


Получим такой диалог





Теперь сделаем обработку элементов в диалоге

В MainActivity прописываем
final AlertDialog al;

//Моделирование окна диалога
AlertDialog.Builder  AlE = new AlertDialog.Builder(this);
AlE.setTitle("Диалог");

//Находим файл с описание вида диалога
LinearLayout view = (LinearLayout)getLayoutInflater().inflate(R.layout.main_dialog, null);             

//Устанавливаем диалогу внешний вид
AlE.setView(view);

//Находим компонеты диалогового окна
EditText edit =(EditText)view.findViewById(R.id.edit);
Button b_confirm = (Button)view.findViewById(R.id.button_confirm);
TextView t_confirm_id =(TextView)view.findViewById(R.id.text_confirm_id);
      
Spinner spinner = (Spinner)view.findViewById(R.id.spinner);
      
Button b_OK = (Button)view.findViewById(R.id.button_OK);
Button b_Cancel = (Button)view.findViewById(R.id.button_Cancel)

al=AlE.create();
           
//---СПИННЕР-------------
      
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, order);
      adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
      
//начальная позиция
spinner.setSelection(1);
      
 //---спиннер-------------






simple_spinner_item и  simple_spinner_dropdown_itemэто встроенные xml файлы ,
для разметки внешнего вида спиннера по умолчанию

order это массив данных, который отображается в спиннере.
Прописываем его вместе с объявлениями переменных
public String order[]={"A","B","C"};

 Начальная позиция спиннера утанавливается с помощью метода setSelection()

Начальная позиция







Видео с уроком




Теперь MainActivity выглядит так
package my.ambar.dialog;


import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;


public class MainActivity extends Activity {
 
public String order[]={"A","B","C"};

protected static final int CUSTOM_DIALOG = 0;
protected static final int OTHER_DIALOG = 1;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
   
final Button b_dialog = (Button)findViewById(R.id.b_custom_dialog_id);
final Button b_dialog2 = (Button)findViewById(R.id.b_custom_dialog2_id);
     
b_dialog.setOnClickListener(new View.OnClickListener() {
  
public void onClick(View v) {
     
showDialog(CUSTOM_DIALOG);
   
//b_dialog.setText("Clicked");
        
  }
 });
     
b_dialog2.setOnClickListener(new View.OnClickListener() {
   
public void onClick(View v) {
      
 showDialog(OTHER_DIALOG);
    
  }
  });
    
    
    }
        
//---СОЗДАЕМ ДИАЛОГ-------------------------------
 
protected Dialog onCreateDialog(int id) {
Dialog dialog = null;
switch (id) {
case CUSTOM_DIALOG :
   
final AlertDialog al;
AlertDialog.Builder AlE = new AlertDialog.Builder(this);
AlE.setTitle("Диалог");
   
LinearLayout view = (LinearLayout)getLayoutInflater().inflate(R.layout.main_dialog,null);
AlE.setView(view);

EditText edit =(EditText)view.findViewById(R.id.edit);
Button b_confirm = (Button)view.findViewById(R.id.button_confirm);
TextView t_confirm_id =(TextView)view.findViewById(R.id.text_confirm_id);
      
Spinner spinner = (Spinner)view.findViewById(R.id.spinner);
      
Button b_OK = (Button)view.findViewById(R.id.button_OK);
Button b_Cancel = (Button)view.findViewById(R.id.button_Cancel);
      
      
//---СПИННЕР-------------
      
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, order);
      adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);

//начальная позиция
spinner.setSelection(1);
      
//---спиннер-------------
      
     
     
al=AlE.create(); 
al.show();
break;
         
case OTHER_DIALOG :
final AlertDialog al_other;
AlertDialog.Builder Al_O = new AlertDialog.Builder(this);
Al_O.setTitle("Второй Диалог");
   
al_other=Al_O.create();
al_other.show();
break;
   
 }
return dialog;
}
 
 
//---создаем диалог-------------------------------
 
 
 
}









Комментариев нет:

Отправить комментарий