0

У меня проблема с приложением, которое я пытаюсь создать. За последние несколько дней я много раз занимался поиском в Интернете, но, похоже, не могу понять.Пользовательский адаптер для 3 списков

Цель состоит в том, чтобы иметь возможность расширения списка в одном действии, которое имеет в общей сложности 12 опций. Каждый из этих 12 вариантов, при нажатии, приведет пользователя к тому же самому макету, который имеет 3 вкладки (по понедельникам, средам, пятницам). Каждая вкладка имеет список. Это все работает для моего приложения. Теперь я хочу, чтобы мой пользовательский адаптер заполнял эти 3 списка с разными данными (которые я планирую жестко закодировать в приложении, а не тонну данных, поэтому не думайте, что это замедлит его), в зависимости от того, какой элемент в представлении расширяемого списка был нажат.

Проблема, с которой я сталкиваюсь, я не знаю, как я могу позволить пользовательскому адаптеру узнать, какой элемент в расширенном ListView был нажат, и я не знаю, как взять эту информацию, и заполнить три разных listviews в 3 разных вкладках с тремя различными наборами данных.

Данные очень прямые и все очень похоже. Каждая строка будет иметь 3 текстовых поля, одна из которых содержит одно слово и 2 содержит номера. Он также будет иметь флажок

Я сделал пользовательские адаптеры раньше, но они были для отдельных списков, и мне не пришлось разделять данные, поэтому было намного проще. Я понятия не имею, как начать этот, и мои попытки поиска в Интернете это пустые.

Любая помощь очень ценится, даже просто ссылка, чтобы указать мне в правильном направлении, было бы замечательно! Благодаря!

ответ

0

Создание 3 различных фрагментов на 3 вкладки, используя (TabLayout + ViewPager) комбо.
Затем позвоните в Activity, который имеет доступ к этому TabLayout и ViewPager, а затем динамически добавьте вкладки с помощью пользовательских списков просмотров. Там вы идете, простое решение.

0

Вы можете использовать тот же самый CustomAdapter, чтобы заполнить все необходимые данные. Таким образом, вместо жесткого кодирования данных в вашем CustomAdapter вы можете динамически устанавливать данные во время создания объекта.

Таким образом, при создании Adapter вы передаете данные, которые должны обрабатывать. Поскольку ваша активность знает, какой элемент расширенного списка был нажат, вы можете отправлять разные данные в ваш адаптер.

public class MyCustomAdapter extends BaseAdapter { 
    private String [] dataToBePopulated; 

    public MyCustomAdapter(String [] data) { 
     dataToBePopulated = data; 
    } 

    @Override 
    public int getCount() { 
     return dataToBePopulated != null ? dataToBePopulated.lenght : 0; 
    } 

    // ETC.. 
} 

Затем, при создании адаптера, вы можете отправить данные, которые вы хотите нравится:

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle arg0) { 
     super.onCreate(arg0); 

     .... 

     ListView listView = (ListView) findViewById(R.id.ID_OF_LISTVIEW); 
     MyCustomAdapter listViewAdapter; 
     if(/* CONDITION 1 */) { 
      listViewAdapter = new MyCustomAdapter(new String[] {"Data1 for Condition 1", "Data2 for Condition 1", "Data3 for Condition 1"}) 
     } else if (/* CONDITION 2 */) { 
      listViewAdapter = new MyCustomAdapter(new String[] {"Data1 for Condition 2", "Data2 for Condition 2"}) 
     } else { 
      listViewAdapter = new MyCustomAdapter(new String[] {"Data1 for Condition 3"}) 
     } 

     listView.setAdapter(listViewAdapter); 

     ....    
    } 

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