У меня есть два настраиваемых динамических списка, один в виде навигации и один в основном макете, например:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/jobs">
</ListView>
</LinearLayout>
<android.support.design.widget.NavigationView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:id="@+id/nav_view">
<LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/Subjects"
android:choiceMode="singleChoice"
android:listSelector="#ADADAD"
>
</ListView>
</LinearLayout>
</android.support.design.widget.NavigationView>
Я использую функцию наблюдения модели представления, чтобы заполнить обасписки, что-то вроде этого.Оба списка заполняются с использованием одной и той же базы данных
activityViewModel.getAllGroups().observe(this, new Observer<List<String>>() {
@Override
public void onChanged(@Nullable List<String> strings) {
Groups = strings;
navDrawListAdapter.setGroups(strings);
}
});
activityViewModel.getAllActivites().observe(this, new Observer<List<Activity>>() {
@Override
public void onChanged(@Nullable List<Activity> activities) {
mactivities = activities;
tasksListAdapter.setmTasks(activities);
}
});
Теперь, когда кто-то щелкает по списку в навигационном ящике, я хочу, чтобы в другом списке отображались только соответствующие элементы, соответствующие выбранной строке.
например, если в панели навигации выбран «Поезда», я хочу показывать только элементы, у которых атрибут «тип» равен «Поезда»
Я попытался установить onClickListener для адаптера списка навигации ипытался обновить данные на другом адаптере, но это приводило к изменению списка при каждом щелчке, и если я нажимал на какой-либо другой элемент навигации, он делал список пустым
void setmTasks(List<Activity> activities,String Typename){
mTasks = activities;
for(int i=0;i<activities.size();i++)
if(!activities.get(i).getType().equals(Typename))
mTasks.remove(activities.get(i));
notifyDataSetChanged();
}
Как мне поступить об этом
Заранее спасибо