多视图切换器Android

时间:2015-08-07 13:48:04

标签: android

在我的应用中,我有一个活动,可以显示列表或几个空视图之一(加载,登录,错误等)

我正在寻找这样的事情:

public static class MultipleViewSwitcher {
    private final ArrayList<View> mViews;

    MultipleViewSwitcher(Activity activity, int... viewIds) {
        mViews = new ArrayList<>(viewIds.length);
        for (int id: viewIds) {
            mViews.add(activity.findViewById(id));
        }
    }

    public void showView(int viewId) {
        for (View view: mViews) {
            view.setVisibility(view.getId() == viewId ? View.VISIBLE : View.GONE);
        }
    }
}

ViewFlipper似乎有点过分,因为我不需要特殊的动画。 是否有任何原生组件可以做到?

1 个答案:

答案 0 :(得分:0)

稍微重写您的代码,以便您不必遍历所有视图

    public static class MultipleViewSwitcher {
    private final HashMap<Integer, View> mViews;
    private int currentView = -1;

    MultipleViewSwitcher(Activity activity, int... viewIds) {
        mViews = new HashMap<>();
        for (int id: viewIds) {
            mViews.put(id, activity.findViewById(id));
        }
    }

    public void showView(int viewId) {
        if (currentView != viewId) {
            if (currentView != -1)
                mViews.get(currentView).setVisibility(View.GONE);
            mViews.get(viewId).setVisibility(View.VISIBLE);
            currentView = viewId;
        }
    }
}