【问题标题】:How to use two different layout in a fragment?如何在一个片段中使用两种不同的布局?
【发布时间】:2020-12-31 14:11:21
【问题描述】:

我有一个名为“CategoriesFragment”的片段,其中包含一个列表视图。当我单击 listView 中的项目时,我想在网格视图中显示产品。这是我在 CategoriesFragment 中的 onCreateView 方法:

public View onCreateView(@NonNull final LayoutInflater inflater, @Nullable final ViewGroup container, @Nullable Bundle savedInstanceState) {


    View view=inflater.inflate(R.layout.fragment_categories, container, false);
    final String[] names={"IT","Fashion","Furniture","Garden","Toys","Sport","Cosmetics","Supermarket","Book"};
    final Product[] it={new Product("Asus Vivobook 15.6","5000TL",R.drawable.pc1),new Product("Asus Vivobook 15.6","5000TL",R.drawable.pc1),new Product("Asus Vivobook 15.6","5000TL",R.drawable.pc1),new Product("Asus Vivobook 15.6","5000TL",R.drawable.pc1),
            new Product("Asus Vivobook 15.6","5000TL",R.drawable.pc1),new Product("Asus Vivobook 15.6","5000TL",R.drawable.pc1),new Product("Asus Vivobook 15.6","5000TL",R.drawable.pc1),new Product("Asus Vivobook 15.6","5000TL",R.drawable.pc1)};
    int [] images={R.drawable.pc1,R.drawable.box,R.drawable.bell,R.drawable.info,R.drawable.creditcard,R.drawable.logout,R.drawable.creditcard,R.drawable.logout,R.drawable.logout};
    AccountAdapter accountAdapter=new AccountAdapter(getContext(),names,images);
    

    ListView listView = (ListView) view.findViewById(R.id.category_listView);
    final View view1=inflater.inflate(R.layout.product, container, false);


    listView.setAdapter(accountAdapter);
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {


            if(names[position].equals("IT")){

                gridView =(GridView) view1.findViewById(R.id.products);
                ProductAdapter productAdapter=new ProductAdapter(getContext(),it);
                gridView.setAdapter(productAdapter);
            }


        }
    });

当我执行应用程序时,我得到了错误:

Attempt to invoke virtual method 'void android.widget.GridView.setAdapter(android.widget.ListAdapter)' on a null object reference

【问题讨论】:

    标签: android android-fragments gridview


    【解决方案1】:

    只能膨胀一个视图,如果您尝试膨胀另一个视图,它实际上只返回根视图。

    您可以做的是,创建一个视图并在该视图本身中扩展两个布局,并根据您的条件隐藏和显示可见性。

    <LinearLayout>
    <include layout="@layout/fragment_categories"/>
    <include layout="@layout/product"/>
    </LinearLayout>
    

    只需将此 xml 作为您的 rootview 并检查它。 this answer中提供了详细说明

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多