2017-02-01 44 views
0

我想製作一個主菜單,根據用戶的偏好而有所不同。我該如何製作一個動作完整的XML動態列表(當前解決方案:3個陣列)

現在,我在標題,圖標和字符串的XML值中創建了不同的數組集合,以填充回收站視圖。

所以它看起來像這樣:

<string-array name="titlelist_A"> 
    <item>Item 1</item> 
    <item>Item 2</item> 
    <item>Item 2</item> 
    ... 
</string-array> 

<integer-array name="iconlist_A"> 
    <item>@drawable/ic_menu_item1</item> 
    <item>@drawable/ic_menu_item2</item> 
    <item>@drawable/ic_menu_item3</item> 
    ..... 
</integer-array> 

<string-array name="actionlist_A"> 
    <item>Activity1</item> 
    <item>Activity2</item> 
    <item>Activity3</item> 
    ..... 
</integer-array> 

在我的適配器的構造,我會把所有這些陣列我重複(A,B,C,d,E,...),以通過將相應的數組轉換爲用戶偏好。

在我RecyclerView適配器,我用這些陣列設置標題,繪製和OnClickListener

@Override 
public void onBindViewHolder(MenuViewHolder holder, int position) { 
    holder.title.setText(titleList[position]); 
    holder.icon.setImageResource(iconList.getResourceId(position,0)); 
} 

這似乎是一個沉重的解決方案,我想知道是否有人已經在前面類似的問題,他們發現...

回答

1

好吧,我終於使用的菜單:

PopupMenu p = new PopupMenu(context, null); 
    menu = p.getMenu(); 
    context.getMenuInflater().inflate(R.menu.menu_b, menu); 

,並在我的適配器:

MenuItem item = menu.getItem(position); 
    holder.title.setText(item.getTitle()); 
    holder.icon.setImageDrawable(item.getIcon());