2010-07-09 15 views

Odpowiedz

2

Tutaj masz działające rozwiązanie. Nie moja, ale użyłem opisanej techniki i zadziałało. Nie zapomnij o img.setBounds(), jest to konieczne!

http://mgmblog.com/2010/06/10/arrayadapter-and-alertdialog-for-single-choice-items/

PS: oryginalny post nie wyświetla radiobutton, ale mój układ ma. Mój plik XML układ pojedynczy wiersz (animal_row.xml brakuje w przykładzie) jest tutaj:

<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/miastorow_text" 
android:layout_width="fill_parent" 
android:layout_height="?android:attr/listPreferredItemHeight" 
android:textAppearance="?android:attr/textAppearanceLarge" 
android:gravity="center_vertical" 
android:checkMark="?android:attr/listChoiceIndicatorSingle" 
android:paddingLeft="6dip" 
android:paddingRight="6dip" 
android:textColor="#000" 
/> 
+0

niesamowite, dziękuję. –

2

Wszystko można przesłonić i utworzyć od podstaw. Najpierw utwórz xml opisujący żądaną treść. Na przykład:

<!-- test.xml --> 
<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
android:background="@color/white"> 
<ImageView android:id="@+id/ImageView01" 
    android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
    android:src="@drawable/facebook"></ImageView> 
<TextView android:id="@+id/TextView01" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_toRightOf="@+id/ImageView01" 
    android:text="Facebook" 
      android:textSize="40sp"></TextView> 
<RadioButton android:id="@+id/RadioButton01" 
    android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
    android:layout_toRightOf="@+id/TextView01"></RadioButton> 
</RelativeLayout> 

Następnie skompiluj ten plik XML za pomocą okna dialogowego alertu. Możesz pozwolić aktywność obsługiwać okno i po prostu zastąpić onCreateDialog tak:

@Override 
protected Dialog onCreateDialog(int id) { 
    View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.test, null); 
    return new AlertDialog.Builder(MainActivity.this).setView(view).setTitle("Share") 
        .create(); 
} 

można następnie zastąpić onClick do przechowywania stanu w plikach StaticPreferences. W ten sposób będziesz mieć pełną kontrolę nad wszystkimi elementami w swoim widoku.

Jedna ostatnia rada podczas tworzenia pliku xml zapewnia optymalny układ, aby kod był zoptymalizowany. Możesz także grać z układem listy, aby stworzyć coś takiego.

+0

Zła odpowiedź, moim układ pytanie wzmianki w układzie xml robicie radiobutton sub dziecko układzie względnym, dzięki czemu przełącznik dziecko innych niż grupy radiologiczne nie działa. W takim przypadku odpowiedź nie powiedzie się. –

+0

@Faisal khan: Po prostu dawał przykład. – Macarse

0

Nie pracowałem nad tym. Ale mam pomysł, aby połączyć trzy przykłady na demo API.

  1. AlertDialogs
  2. SingleChoice Adapter
  3. Efficient Adapter

kroki trzeba zrobić to:

  • Tworzenie AlertDialog
  • Tworzenie listy Adapter Class dla widoku chcesz osiągać.
  • Użyj metody SetAdapter, aby ustawić ListAdapter.

Przykładowy kod:

new AlertDialog.Builder(MainActivity.this).setTitle("Share")setAdapter(new Listadapterclass(),new DialogInterface.OnClickListener(){ 

          @Override 
          public void onClick(DialogInterface arg0, 
            int arg1) { 
           // TODO Auto-generated method stub 
     // the click event on the list item selected       
          }}) 
       .create(); 

nadzieję, że to działa.

+0

nie działa, ponieważ mamy przycisk radiowy pracujący w jednej grupie z inflatem –

Powiązane problemy