Java 将if字符串语句转换为switch字符串语句

Java 将if字符串语句转换为switch字符串语句,java,android,android-listview,switch-statement,android-listfragment,Java,Android,Android Listview,Switch Statement,Android Listfragment,我个人觉得使用和阅读切换案例场景更容易。有人知道我的列表视图的代码可以更改为什么,以便它使用字符串上的switch语句而不是if语句吗?我已根据需要将编译器更改为1.7 @Override public void onActivityCreated(Bundle savedInstanceState) { View v = getView(); if (getActivity().findViewById(R.id.detail_container) !

我个人觉得使用和阅读切换案例场景更容易。有人知道我的列表视图的代码可以更改为什么,以便它使用字符串上的switch语句而不是if语句吗?我已根据需要将编译器更改为1.7

@Override
    public void onActivityCreated(Bundle savedInstanceState) {
        View v = getView();

        if (getActivity().findViewById(R.id.detail_container) != null) {
            mTwoPane = true;
        } else {
            mTwoPane = false;
        }

        ListView lv = (ListView)v.findViewById(android.R.id.list);
        lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {



@Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                // get the adapter, then get the name from the adapter at that position
        WorldListAdapter adapter = (WorldListAdapter) parent.getAdapter();
        String country = adapter.getItem(position);

                if (mTwoPane) {
            setItemNormal();
            View rowView = view;
            setItemSelected(rowView);

            Fragment newFragment;
            if (country.equals(view.getResources().getString(R.string.africa))) {
                newFragment = new FragmentAfrica();
            } else if (country.equals(view.getResources().getString(R.string.asia))) {
                newFragment = new FragmentAsia();
            } else if (country.equals(view.getResources().getString(R.string.europe))) {
                newFragment = new FragmentEurope();
            } else {
                newFragment = new FragmentAfrica();
            }
            WorldActivity activity = (WorldActivity) view.getContext();
            FragmentTransaction transaction = activity.getSupportFragmentManager().beginTransaction();
            transaction.replace(R.id.detail_container, newFragment);
            transaction.commit();
        } else {
            Intent intent;
            if (country.equals(view.getResources().getString(R.string.africa))) {
                intent = new Intent(getActivity(), AfricaActivity.class);
            } else if (country.equals(view.getResources().getString(R.string.asia))) {
                intent = new Intent(getActivity(), AsiaActivity.class);
            } else if (country.equals(view.getResources().getString(R.string.europe))) {
                intent = new Intent(getActivity(), EuropeActivity.class);
            } else {
                intent = new Intent(getActivity(), AfricaActivity.class);
            }
            startActivity(intent);
        }
    }

            public void setItemSelected(View view) {
                View rowView = view;
                view.setBackgroundColor(Color.parseColor("#1C3F96"));

                TextView tv0 = (TextView) rowView.findViewById(R.id.country);
                tv0.setTextColor(Color.parseColor("#FFFFFF"));

                TextView tv1 = (TextView) rowView.findViewById(R.id.country_description);
                tv1.setTextColor(Color.parseColor("#FFFFFF"));
            }

            public void setItemNormal() {
                for (int i = 0; i < getListView().getChildCount(); i++) {
                    View v = getListView().getChildAt(i);
                    v.setBackgroundColor(Color.TRANSPARENT);

                    TextView tv0 = ((TextView) v.findViewById(R.id.country));
                    tv0.setTextColor(Color.WHITE);

                    TextView tv1 = ((TextView) v.findViewById(R.id.country_description));
                    tv1.setTextColor(Color.parseColor("#B5B5B5"));
                }
            }
        });

        super.onActivityCreated(savedInstanceState);
    }
@覆盖
已创建ActivityState上的公共无效(Bundle savedInstanceState){
视图v=getView();
if(getActivity().findViewById(R.id.detail\u容器)!=null){
mTwoPane=true;
}否则{
mTwoPane=false;
}
ListView lv=(ListView)v.findviewbyd(android.R.id.list);
lv.setChoiceMode(ListView.CHOICE\u MODE\u SINGLE);
lv.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
//获取适配器,然后从该位置的适配器获取名称
WorldListAdapter=(WorldListAdapter)parent.getAdapter();
字符串country=adapter.getItem(位置);
如果(mTwoPane){
setItemNormal();
视图行视图=视图;
setItemSelected(行视图);
新片段;
if(country.equals(view.getResources().getString(R.string.africa))){
newFragment=newfragmentAfrica();
}else if(country.equals(view.getResources().getString(R.string.asia))){
newFragment=newfragmentAsia();
}else if(country.equals(view.getResources().getString(R.string.europe))){
newFragment=newfragmentEurope();
}否则{
newFragment=newfragmentAfrica();
}
WorldActivity=(WorldActivity)view.getContext();
FragmentTransaction=activity.getSupportFragmentManager().beginTransaction();
事务.替换(R.id.detail\u容器,newFragment);
commit();
}否则{
意图;
if(country.equals(view.getResources().getString(R.string.africa))){
intent=新的intent(getActivity(),AfricaActivity.class);
}else if(country.equals(view.getResources().getString(R.string.asia))){
intent=新的intent(getActivity(),asiaaActivity.class);
}else if(country.equals(view.getResources().getString(R.string.europe))){
intent=新的intent(getActivity(),EuropeActivity.class);
}否则{
intent=新的intent(getActivity(),AfricaActivity.class);
}
星触觉(意向);
}
}
已选择公共void setItemSelected(视图){
视图行视图=视图;
view.setBackgroundColor(Color.parseColor(#1C3F96”);
TextView tv0=(TextView)rowView.findViewById(R.id.country);
tv0.setTextColor(Color.parseColor(#FFFFFF”);
TextView tv1=(TextView)rowView.findViewById(R.id.country_description);
tv1.setTextColor(Color.parseColor(#FFFFFF”);
}
公共void setItemNormal(){
对于(int i=0;i
创建并使用工厂方法

Fragment newFragment = FragmentFactory.createInstance(country, view);
...            
Intent intent = IntentFactory.createInstance(country, view);
这样,您可以在工厂类中添加新类型的片段和意图,但在客户机类中保留泛型类型。通过这种方式,它更易于维护和扩展

考虑一下这篇文章,再看一看这个话题

下面是一个可能的工厂示例

public class FragmentFactory {

    public static Fragment getInstance(String country, View view) {
        Fragment newFragment = null;

        if (country.equals(view.getResources().getString(R.string.africa))) {
            newFragment = new FragmentAfrica();
        } 
        else if (country.equals(view.getResources().getString(R.string.asia))) {
            newFragment = new FragmentAsia();
        } 
        else {
            if (country.equals(view.getResources().getString(R.string.europe))) {
                newFragment = new FragmentEurope();
            }
        } 
        return  newFragment;       
    }
}
你可以试着换一下

public static Fragment getInstance(String country, View view, ) {
    Fragment newFragment = null;

    switch (country.toLowerCase()) {

        case view.getResources().getString("africa"):
            newFragment = new FragmentAfrica();
            break;

        case view.getResources().getString("asia"):
            newFragment = new FragmentAsia();
            break;

        case view.getResources().getString("europe"):
            newFragment = new FragmentEurope();
            break;
    }               
    return newFragment;
}

创建并使用工厂方法

Fragment newFragment = FragmentFactory.createInstance(country, view);
...            
Intent intent = IntentFactory.createInstance(country, view);
这样,您可以在工厂类中添加新类型的片段和意图,但在客户机类中保留泛型类型。通过这种方式,它更易于维护和扩展

考虑一下这篇文章,再看一看这个话题

下面是一个可能的工厂示例

public class FragmentFactory {

    public static Fragment getInstance(String country, View view) {
        Fragment newFragment = null;

        if (country.equals(view.getResources().getString(R.string.africa))) {
            newFragment = new FragmentAfrica();
        } 
        else if (country.equals(view.getResources().getString(R.string.asia))) {
            newFragment = new FragmentAsia();
        } 
        else {
            if (country.equals(view.getResources().getString(R.string.europe))) {
                newFragment = new FragmentEurope();
            }
        } 
        return  newFragment;       
    }
}
你可以试着换一下

public static Fragment getInstance(String country, View view, ) {
    Fragment newFragment = null;

    switch (country.toLowerCase()) {

        case view.getResources().getString("africa"):
            newFragment = new FragmentAfrica();
            break;

        case view.getResources().getString("asia"):
            newFragment = new FragmentAsia();
            break;

        case view.getResources().getString("europe"):
            newFragment = new FragmentEurope();
            break;
    }               
    return newFragment;
}

创建并使用工厂方法

Fragment newFragment = FragmentFactory.createInstance(country, view);
...            
Intent intent = IntentFactory.createInstance(country, view);
这样,您可以在工厂类中添加新类型的片段和意图,但在客户机类中保留泛型类型。通过这种方式,它更易于维护和扩展

考虑一下这篇文章,再看一看这个话题

下面是一个可能的工厂示例

public class FragmentFactory {

    public static Fragment getInstance(String country, View view) {
        Fragment newFragment = null;

        if (country.equals(view.getResources().getString(R.string.africa))) {
            newFragment = new FragmentAfrica();
        } 
        else if (country.equals(view.getResources().getString(R.string.asia))) {
            newFragment = new FragmentAsia();
        } 
        else {
            if (country.equals(view.getResources().getString(R.string.europe))) {
                newFragment = new FragmentEurope();
            }
        } 
        return  newFragment;       
    }
}
你可以试着换一下

public static Fragment getInstance(String country, View view, ) {
    Fragment newFragment = null;

    switch (country.toLowerCase()) {

        case view.getResources().getString("africa"):
            newFragment = new FragmentAfrica();
            break;

        case view.getResources().getString("asia"):
            newFragment = new FragmentAsia();
            break;

        case view.getResources().getString("europe"):
            newFragment = new FragmentEurope();
            break;
    }               
    return newFragment;
}

创建并使用工厂方法

Fragment newFragment = FragmentFactory.createInstance(country, view);
...            
Intent intent = IntentFactory.createInstance(country, view);
这样,您可以在工厂类中添加新类型的片段和意图,但在客户机类中保留泛型类型。通过这种方式,它更易于维护和扩展

考虑一下这篇文章,再看一看这个话题

下面是一个可能的工厂示例

public class FragmentFactory {

    public static Fragment getInstance(String country, View view) {
        Fragment newFragment = null;

        if (country.equals(view.getResources().getString(R.string.africa))) {
            newFragment = new FragmentAfrica();
        } 
        else if (country.equals(view.getResources().getString(R.string.asia))) {
            newFragment = new FragmentAsia();
        } 
        else {
            if (country.equals(view.getResources().getString(R.string.europe))) {
                newFragment = new FragmentEurope();
            }
        } 
        return  newFragment;       
    }
}
你可以试着换一下

public static Fragment getInstance(String country, View view, ) {
    Fragment newFragment = null;

    switch (country.toLowerCase()) {

        case view.getResources().getString("africa"):
            newFragment = new FragmentAfrica();
            break;

        case view.getResources().getString("asia"):
            newFragment = new FragmentAsia();
            break;

        case view.getResources().getString("europe"):
            newFragment = new FragmentEurope();
            break;
    }               
    return newFragment;
}

java 8支持带
字符串的开关大小写

 @Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    // get the adapter, then get the name from the adapter at that position
    WorldListAdapter adapter = (WorldListAdapter) parent.getAdapter();
    String country = adapter.getItem(position);

    if (mTwoPane) {
        setItemNormal();
        View rowView = view;
        setItemSelected(rowView);

        Fragment newFragment;
        switch (country.toLowerCase()) {
            case "africa":
                newFragment = new FragmentAfrica();
                break;
            case "asia":
                newFragment = new FragmentAsia();
                break;
            case "europe":
                newFragment = new FragmentEurope();
                break;
            default:
                newFragment = new FragmentAfrica();
        }
        WorldActivity activity = (WorldActivity) view.getContext();
        FragmentTransaction transaction = activity.getSupportFragmentManager().beginTransaction();
        transaction.replace(R.id.detail_container, newFragment);
        transaction.commit();
    } else {
        Intent intent;
        switch (country.toLowerCase()) {
            case "africa":
                intent = new Intent(getActivity(), AfricaActivity.class);
                break;
            case "asia":
                intent = new Intent(getActivity(), AsiaActivity.class);
                break;
            case "europe":
                intent = new Intent(getActivity(), EuropeActivity.class);
                break;
            default:
                intent = new Intent(getActivity(), AfricaActivity.class);
        }

        startActivity(intent);
    }
}
           you can replace the literals `africa`,`asia`,`europe` with anything you want
@覆盖
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
//获取适配器,然后从该位置的适配器获取名称
WorldListAdapter=(WorldListAdapter)parent.getAdapter();
字符串country=adapter.getItem(位置);
如果(mTwoPane){
setItemNormal();
视图行视图=视图;
setItemSelected(行视图);
新片段;
开关(country.toLowerCase()){
案例“非洲”:
newFragment=newfragmentAfrica();
打破