如何在 Android for Cars Android Auto 中向行添加操作?

问题描述 投票:0回答:2

我想在 Android Auto 的汽车应用程序中显示一个列表。该列表应包含带有两个按钮的项目,用于单独的操作。

我尝试添加 addAction(),但它似乎在 Row Class 中不可用。有人可以帮助我构建一个 Row 或一个带有两个按钮的列表项,以便我可以将其添加到 ItemList.Builder 中吗?

我当前的代码是

ListTemplate.Builder templateBuilder = new ListTemplate.Builder();
        ItemList.Builder itemList = new ItemList.Builder();
        templateBuilder.setLoading(isLoading);
        if(!isLoading) {
            for (ParkingList parkingList : parkingList) {
                Row rowItem = new Row.Builder()
                        .setTitle(parkingList.getNome())
                        .setImage(new CarIcon.Builder(
                                        IconCompat.createWithResource(
                                                getCarContext(),
                                                R.drawable.ic_launcher_foreground))
                                        .build(),
                                Row.IMAGE_TYPE_LARGE)
                        .setBrowsable(false)
                        .addText(parkingList.getDescrizione())
                        .addText(parkingList.getLat() + " " + parkingList.getLng())
                        .setOnClickListener(
                                () ->
                                        getScreenManager()
                                                .push(new NextScreen(getCarContext())))
                        .build();

                itemList.addItem(rowItem);
            }
            ItemList templateList = itemList.build();
            templateBuilder.setSingleList(templateList); 
        }
        return templateBuilder.setTitle("Parking List").build();
android android-auto android-automotive
2个回答
0
投票

   @Override
        public Template onGetTemplate() {



            ListTemplate.Builder templateBuilder = new ListTemplate.Builder();
            ItemList.Builder itemListBuilder = new ItemList.Builder();
            ItemList itemList = itemListBuilder
            .setOnSelectedListener(this::onSelected).build();
                        
            templateBuilder.addSectionedList(SectionedItemList.create(itemList, "some section header title"));
    
            return templateBuilder.setTitle("MY TITLE").setHeaderAction(BACK).build();
}

然后添加这个:

  private void onSelected(int selectedIndex) {


   }

希望对你有帮助


0
投票

连续使用 addAction() 是允许的,但尝试包含多个操作将导致异常:“由 java.lang.IllegalArgumentException 引起:操作列表超出了 1 个操作的最大数量。”还建议避免在一行中执行两个不同的操作。如果需要双重操作,建议使用切换开关。这允许根据切换状态执行两个操作。

Row.Builder()
        .setImage(rowIcon)
        .setToggle(Toggle.Builder {
            if (it) {
                println("On")
            } else {
                println("Off")
            }
        }
            .setChecked(false)
            .build())
        .setTitle(title)
        .build()
}
© www.soinside.com 2019 - 2024. All rights reserved.