0

在我的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 的问题。

4

2 回答 2

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 值动态扩展布局。

于 2013-05-17T05:41:08.547 回答
0

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

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

你不必有不同的活动有多重布局并将所有代码放在这个活动中,它会根据你的要求工作

于 2013-05-17T06:41:38.223 回答