基于JSON键值启动不同的视图布局

时间:2013-05-17 03:35:20

标签: java android android-layout android-intent android-listview

在我的Android应用程序中,我想根据服务器上的JSON配置文件显示不同的应用程序布局,例如,如果配置布局键设置为ListView,而不是在应用程序启动时显示ListView,如果配置布局键设置为GridView,则相同比在应用程序中显示GridView。

为此,我有:

public void sendView(View view) throws JSONException, IOException{ 

        String[] viewType = pm.getScreetypeConfigFromJsonElement();

      if ( viewType[0] == "LV"){
            Intent intent = new Intent(this, AUListView.class);
            startActivity(intent);
        }else if(){....}  //For any other view

    }

现在我在MainActivity中调用了这个函数

   @Override
        protected void onCreate(Bundle savedInstanceState) {

                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);


                 try {
                sendView(/*Cant solve how to pass view */);
                } catch (JSONException e1) {
                    e1.printStackTrace();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
                . 
                .
                .
}

如何解决在Android中基于JSON配置值启动不同AppLayout的问题。

2 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点。一个简单的解决方案是制作不同的布局,并根据您想要的布局调用setContentView()。例如,为您的活动制作2个布局。其中一个有ListView,另一个有GridView说。您可以根据:

进行充气
 String[] viewType = pm.getScreetypeConfigFromJsonElement();
    if ( viewType[0] == "LV"){
                setContentView(R.layout.main_layout_with_list_view);
    else if  ( viewType[0] == "GV"){
                setContentView(R.layout.main_layout_with_grid_view);

您可以将此代码放在onCreate()方法中,以根据您的JSON值动态扩充布局。

答案 1 :(得分:0)

在super.onCreate(savedInstanceState)之后

;调用该方法中使用setContentView(R.layout.activity_main)检查json键的方法;在你的条件

if(viewType[0]== type1)
  setContentView(R.layout.yourlayout1);
else if(viewType[0]== type2)
  setContentView(R.layout.yourlayout2);

您不必让不同的活动具有multilpe布局并将所有代码放入此活动中,并且它将按照您的要求运行