我有一个带图像的菜单,想要将我片段上的另一个imageView更改为点击的Menuitem中的图像。 在片刻,我将图像更改为第一个,因为我不知道如何处理没有id的情况。当你帮助我给他们一个id或任何其他解决方案时,会很高兴。
public class OneFragment extends Fragment {
HorizontalScrollMenuView menu;
ImageView imageView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_one, container, false);
menu = (HorizontalScrollMenuView)view.findViewById(R.id.menu);
imageView =(ImageView)view.findViewById(R.id.imageView);
initMenu();
return view;
}
private void initMenu() {
menu.addItem("One",R.drawable.ic_one);
menu.addItem("Two",R.drawable.ic_two);
menu.addItem("Three",R.drawable.ic_three);
menu.addItem("Four",R.drawable.ic_four);
menu.addItem("Five",R.drawable.ic_five);
menu.setOnHSMenuClickListener(new HorizontalScrollMenuView.OnHSMenuClickListener() {
@Override
public void onHSMClick(MenuItem menuItem, int position) {
imageView.setImageResource(R.drawable.**`This should be the Icon from selected Menuitem`**);
}
});
}
}
答案 0 :(得分:0)
现在尝试这个更新的课程
这应该可以正常使用,试试这个,如果您有任何疑问,请告诉我
public class OneFragment extends Fragment {
HorizontalScrollMenuView menu;
ImageView imageView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_one, container, false);
menu = (HorizontalScrollMenuView)view.findViewById(R.id.menu);
imageView =(ImageView)view.findViewById(R.id.imageView);
initMenu();
return view;
}
class MyMenu {
public String title;
public int imageRes;
public MyMenu(String title, int imageRes) {
this.title = title;
this.imageRes = imageRes;
}
}
private void initMenu() {
List<MyMenu> myMenus = new ArrayList<>();
myMenus.add(new MyMenu("One", R.drawable.ic_one));
myMenus.add(new MyMenu("Two", R.drawable.ic_two));
myMenus.add(new MyMenu("Three", R.drawable.ic_three));
myMenus.add(new MyMenu("Four", R.drawable.ic_four));
myMenus.add(new MyMenu("Five", R.drawable.ic_five));
for (MyMenu myMenu: myMenus) {
menu.addItem(myMenu.title,myMenu.imageRes);
}
menu.setOnHSMenuClickListener(new HorizontalScrollMenuView.OnHSMenuClickListener() {
@Override
public void onHSMClick(MenuItem menuItem, int position) {
imageView.setImageResource(myMenus.get(position).imageRes);
}
});
}
}
<强>更新强>
另一种方法:
你应该试试这个并检查getIcon()是否运行良好 如果工作正常,这只是一个最小的解决方案,只需更改点击监听器
menu.setOnHSMenuClickListener(new HorizontalScrollMenuView.OnHSMenuClickListener() {
@Override
public void onHSMClick(MenuItem menuItem, int position) {
if (menu.getItem(position).getIcon() != null)
imageView.setImageDrawable(menu.getItem(position).getIcon());
}
});
在这种方法中不需要MyMenu类(由@Code-Apprentice提出的观点)