2013-02-04 2 views
0

В моем приложении у меня есть фрагмент диалога расширения класса. Класс отображает нормальный диалог (не диалоговое окно Alert).Адаптер для отображения вида списка

1.отрисовывание внутреннего диалога списка. представление списка содержит 2 текстовых представления, оба они заполняются 2 строковыми массивами. Я смущен тем, какой адаптер использовать, кроме базовых адаптеров

2.how раздуть макет для диалога. Доступен метод SetView только для диалогового окна оповещений

ответ

0

Если вы хотите отобразить данные в диалоговом окне с помощью адаптера, вы можете использовать ListAdapter. Это может быть что-то вроде этого:

ListAdapter adapter = new ArrayAdapter<String>(context, android.R.layout.select_dialog_item, android.R.id.text1, items) { 
     public View getView(int position, View convertView, ViewGroup parent) { 

     // Do something here 

     return view; 
     } 
    }; 
0

, какой адаптер использовать, кроме базовых адаптеров

=> Там нет никаких ограничений. Вы можете использовать и настраивать любой адаптер согласно вашему требованию. например, вы можете использовать ArrayAdapter, например. ArrayAdapter<JSONObject> или ArrayAdapter<String>.

Как раздуть макет для диалога. Является ли метод setView доступен только

=> проверка: How can inflate a layout containing listview in a alert dialog?

+0

но я не использую диалоговое окно оповещения, внедрил диалоги. Нужно ли использовать базовый адаптер ... это любой другой способ без настройки адаптера – user1526671

1

Единственный способ использовать макет в диалоге является подкласс:

class MyDialog extends Dialog{ 
public MyDialog(Context context) { 
    super(context); 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.dialog); 

    String[] arr1 = new String[]{"title1", "title2", "title3"}; 
    String[] arr2 = new String[]{"content1", "content2", "content3"}; 

    ListView list = (ListView)findViewById(R.id.list); 
    list.setAdapter(new MyAdapter(arr1, arr2)); 
} 

где R.layout.dialog это ваш где будет указан ваш listView, который мы установим Custom Adapter, раздувая макет, содержащий две строки.

private final class MyAdapter extends BaseAdapter{ 
    private String[] mArray1; 
    private String[] mArray2; 

    public MyAdapter(String[] arr1, String[] arr2) { 
     mArray1 = arr1; 
     mArray2 = arr2; 
    } 

    public int getCount() { return mArray1.length; } 
    public Object getItem(int position) { return mArray1[position]; } 
    public long getItemId(int position) { return 0; } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     String str1 = mArray1[position]; 
     String str2 = mArray2[position]; 
     if(convertView==null){ 
      LayoutInflater li = getLayoutInflater(); 
      convertView = li.inflate(R.layout.my_list_cell, null); 
     } 

     TextView text1 = (TextView)convertView.findViewById(R.id.text1); 
     text1.setText(str1); 

     TextView text2 = (TextView)convertView.findViewById(R.id.text2); 
     text1.setText(str2); 

     return convertView; 
    } 
} 
Смежные вопросы