Показать релевантные элементы ListView, соответствующие другому представлению списка в навигационном представлении, где оба списка являются динамическими - PullRequest
0 голосов
/ 24 августа 2018

У меня есть два настраиваемых динамических списка, один в виде навигации и один в основном макете, например:

<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();
    }

Как мне поступить об этом

Заранее спасибо

1 Ответ

0 голосов
/ 24 августа 2018

https://github.com/rey5137/material эта ссылка может помочь вам в DrawerAdapter при переходе по элементу скользящего меню. Переход на выбранную страницу просмотра

@Override
        public void onPageSelected(int position) {
            mDrawerAdapter.setSelected(mItems[position]);
            mSnackBar.dismiss();
        }

в основной деятельности

...