单击列表视图项时,从另一个片段中打开带有协调器布局的片段,

时间:2018-11-14 10:44:32

标签: java android listview android-fragments android-coordinatorlayout

我的应用程序有一个主要活动和4个片段,它们全部都使用FragmentPagerAdapter和View分页器中的listview。 我想做的是打开另一个片段,以获取来自listview项单击的更多信息,该项从自定义ArrayAdapter填充其数据。

当用户单击任何列表视图项时,将打开另一个片段以获取详细信息。我为该详细片段创建了Cordinator布局。我也将必要的实现添加到gradle文件中。 据我了解,我只能将意图用于活动,因为我的应用程序只有一个活动,因此我无法使用意图。 因此,我读到我必须替换它们来交换片段。我读了很多书,尝试了很多,但我很困惑和迷茫。 我也想利用后退按钮,所以我尝试了这个

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);


    adapter = new LocationAdapter(getActivity(), locationArrayList);

    final ListView listView = view.findViewById(R.id.list);

    listView.setAdapter(adapter);
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

            FragmentTransaction ft = getChildFragmentManager().beginTransaction();

            ft.replace(R.id.custom_list_container, ForFurtherInfo.newInstance("Test", "Testt"));
            ft.addToBackStack(null);
            ft.commit();



        }
    });

在上面替换片段的代码中,我首先添加了R.id.list_view布局作为第一个参数,但它不起作用,抛出错误,指出它找不到list_view布局,但应该有,因为它是主要活动夸大了。

这是主要活动->

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

    ViewPager viewPager = findViewById(R.id.view_pager);
    viewPager.setOffscreenPageLimit(4);

    CustomFragmentAdapter customFragmentAdapter = new CustomFragmentAdapter(getSupportFragmentManager(),this);
    viewPager.setAdapter(customFragmentAdapter);

    TabLayout tabLayout = findViewById(R.id.pager_header);
    tabLayout.setupWithViewPager(viewPager);


}

然后我将其替换为custom_list_container,这是用于填充Listview的自定义布局。

这是“ ForFurtherInfo”片段类

 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

return inflater.inflate(R.layout.coordinator_layout_for_further_info,container,false);

}

我的问题是:

1)ForFurtherInfo片段有效,但在listview中是一种listview项。它没有打开新的空白片段,而是将其图像作为列表视图元素放到listview元素中,但这仅是将图像而不是我的coordinator_layout_for_further_info具有的文本等放到了其中。 TabLayout也消失了,但是我可以滑动到其他片段。

2)由于该故障,当我使用后退按钮时,它退出了应用程序。

3)我想要类似Reddit的功能,即当我按下项目时,它将打开另一个具有协调器布局的片段,并且在滚动文本时图像将折叠到应用程序栏。

4)我读到我们不应该在一个应用程序中添加很多活动并使用片段,但是我是否需要另一个活动?

这是我成就不佳的流程图 This is what I want to achieve

0 个答案:

没有答案