在两个列表都是动态的导航视图中显示与另一个列表视图相对应的相关ListView元素

时间:2018-08-24 11:28:13

标签: android listview android-room android-livedata

我有两个自定义动态列表视图,一个在导航视图中,一个在主布局中,例如

<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>

我正在使用View Model的watch函数来填充两个列表,类似这样。两个列表都使用相同的数据库填充

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 :(得分:0)

https://github.com/rey5137/material,此参考可能会帮助您在滑动菜单元素中单击DrawerAdapter并转到选定的视图页面

var marker = new ol.Feature({
    geometry: new ol.geom.Point(ol.proj.transform([16.9071388, 52.4901917], 'EPSG:4326', 'EPSG:3857')),
});

主要活动