2015-12-19 1 views
1

Я пытаюсь добавить форму поиска с помощью edittext и dropdownlist spinner для предупреждения диалога. Мне удалось отобразить текст редактирования, но я не могу понять, как добавить счетчик. Я новичок в android, поэтому любая помощь будет оценена по достоинству.Добавить dropdownlist spinner для предупреждения диалога Android Studio

private void LoadSearchDialogue() 
    { 
     android.app.AlertDialog.Builder alertDialogSearchForm = new android.app.AlertDialog.Builder(this); 
     alertDialogSearchForm.setTitle("Search Form"); 
     alertDialogSearchForm.setMessage("Please complete form"); 
     final EditText textViewInputUsername = new EditText(this); 
     final Spinner spinnerSearchOptions = new Spinner(this); 

     Spinner dropdownSearchOptions = (Spinner)findViewById(R.id.spinnerSearchOptions); 
     String[] items = new String[]{"Customer", "Employee","Date" }; 
     ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, items); 
     dropdownSearchOptions.setAdapter(adapter); 

     mQuery    = (EditText) findViewById(R.id.query); 
     mSearchOption  = (Spinner) findViewById(R.id.spinnerSearchOptions); 




     alertDialogSearchForm.setView(textViewInputUsername); 
     alertDialogSearchForm.setPositiveButton("Continue", 

       new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         //Do nothing here, overriding alert dialogue button 
        } 
       }); 
     final android.app.AlertDialog dialog = alertDialogSearchForm.create(); 
     dialog.show(); 
     dialog.getButton(android.app.AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() 
     { 
      @Override 
      public void onClick(View v) 
      { 
       Boolean closeAlertDialogueOnValidInput = false; 
       //Check if query is entered, 
       String mQueryString = textViewInputUsername.getText().toString().trim(); 
       if(mQueryString.length()<=0) 
       { 
        Toast.makeText(SearchActivity.this, "Please enter query", Toast.LENGTH_SHORT).show(); 
       } 
       else 
       { 
        String q   = mQueryString.toString(); 
        String o   = mSearchOption.getSelectedItem().toString(); 
        SearchResults(q, o); 
       } 

       if(closeAlertDialogueOnValidInput) 
        dialog.dismiss(); 

      } 
     }); 



    } 
+1

Вам нужны некоторые ViewGroup ... Как LinearLayout ... – Selvin

+0

вам нужно SearchView –

ответ

0

Я предлагаю вам создать простой макет XML для вашего диалога:

<!-- alert.xml --> 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 
    <EditText 
     android:id="@+id/search" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"/> 
    <Spinner 
     android:id="@+id/mySpinner" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"/> 
</LinearLayout> 

После этого раздувать View из этого файла макета, установите этот вид в setView методы заполнение Spinner с данными и делать все, что вам нужно. Все, что вы сейчас делаете, чтобы определить поведение кликов на кнопках, останется таким же; но слушатели для ваших EditText и Spinner, если необходимо, будут установлены за пределами DialogfindViewById и setOnClickListener).

надуть View из XML вы должны получить LayoutInflater и использовать его для создания View:

View alertView = getLayoutInflater().inflate(R.layout.alert, null); 

для заполнения Spinner с данными, вы должны использовать Adapter. Существует некоторый код из here:

// you need to have a list of data that you want the spinner to display 
List<String> spinnerArray = new ArrayList<String>(); 
spinnerArray.add("item1"); 
spinnerArray.add("item2"); 

ArrayAdapter<String> adapter = new ArrayAdapter<String>(
    this, android.R.layout.simple_spinner_item, spinnerArray); 

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
Spinner sItems = (Spinner) findViewById(R.id.spinner1); 
sItems.setAdapter(adapter); 

Если вы хотите придерживаться своего пути создания View, вам нужно добавить не только ваш EditText к вашему AlertDialog, но ViewGroup (LinearLayout, например), который будет содержать как EditText, так и Spinner.

+0

Привет Orlangure я пробовал раньше, но кок не получал заполняется данными, так попробовал путь выше –

+0

В любом случае вам нужно будет заполнить свой 'Spinner', поэтому вы должны попробовать, пока не добьетесь успеха. Я добавил код, чтобы продемонстрировать простой способ добавления данных в 'Spinner'. Не забывайте, что вам нужно вызвать метод 'findViewById' в вашем' alertView', который вы создали с помощью 'Inflater'. –

0

Используйте следующий код

public class WvActivity extends Activity { 

    TextView tx; 
    String[] s = { "India ", "Arica", "India ", "Arica", "India ", "Arica", 
      "India ", "Arica", "India ", "Arica" }; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     final ArrayAdapter<String> adp = new ArrayAdapter<String>(WvActivity.this, 
       android.R.layout.simple_spinner_item, s); 

     tx= (TextView)findViewById(R.id.txt1); 
     final Spinner sp = new Spinner(WvActivity.this); 
     sp.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); 
     sp.setAdapter(adp); 

     AlertDialog.Builder builder = new AlertDialog.Builder(WvActivity.this); 
     builder.setView(sp); 
     builder.create().show(); 
     } 
    } 
Смежные вопросы