1

私のAndroidアプリケーションでは、sqliteにgreeDAO ORMを使用しています。だから私は自分のカテゴリリストを取得します:

 List<ArticleCategory> categories = articleCategoryDao.queryBuilder().list(); 

ArcticleCategoryオブジェクトには名前と説明のプロパティがあるため、これらをドロワー項目の名前と説明に使用できます。私の質問は、このリストをmyDrawer項目に追加する方法と、クリックのイベントを管理する方法です。これは私の引き出しコードです:

    Drawer myDrawer = new DrawerBuilder().withActivity(this).withToolbar(toolbar)
            .addDrawerItems(
                    new PrimaryDrawerItem().withName("Home").withIcon(GoogleMaterial.Icon.gmd_import_contacts).withIconColor(Color.BLACK)
            )
            .withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {
                @Override
                public boolean onItemClick(View view, int position, IDrawerItem drawerItem) {

                    return false;
                }
            })
            .withAccountHeader(navigationHeader)
            .withDrawerGravity(GravityCompat.START)
            .build();

私は手動でいくつかの静的アイテムと引き出しへのアイテムとデータベースからのいくつかの動的アイテムを持っているので、このシナリオではクリックイベントが私にとって非常に重要であることを覚えておいてください。

4

1 に答える 1

5

Categoriesをドロワーに追加するには、最初に を作成するDrawerItems必要があります。これは、アイテムを反復処理することで実行できます。

ArrayList<IDrawerItem> drawerItems = new ArrayList<>();
for(ArticleCategory category : categories) {
   drawerItems.add(new PrimaryDrawerItem().withName(category.getName()).withDescription(category.getDescription()));
   //if you have a id you can also do: .withIdentifier(category.getIdentifier());
   //depending on what you need to identify or to do the logic on click on one of those items you can also set a tag on the item: .withTag(category);
}

アイテムを作成したら、それらをDrawerBuilder

drawerBuilder.withDrawerItems(drawerItems);

ドロワーが作成されたら、 のロジックを記述する必要がありますListener。「静的」DrawerItemは識別子を定義する必要があるため、それらのいずれかがクリックされた場合に直接反応できます

.withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {
  @Override
  public boolean onItemClick(View view, int position, IDrawerItem drawerItem) {
      if (drawerItem != null) {
          Intent intent = null;
          if (drawerItem.getIdentifier() == 1) {
              //static item with ID 1
          } else if (drawerItem.getIdentifier() == 2) {
              //static item with ID 2
          } else {
              //if none of your static items were clicked handle the logic for the categories. 
              //now you have the drawerItem which were created from a category
              //you can identify them by identifier, their tag, or name. Depends on what you need to do your logic here

          }
      }

      return false;
  }
})
于 2015-12-20T16:11:55.967 に答える