создать макет Android с помощью ответа JSON - PullRequest
0 голосов
/ 19 января 2012

Мне нужно создать список информации об игре, используя этот ответ json в android:

 {"count":"2","useruid":"100003264774181","games":[{"lastupdate":"2012-01-17 13:55:39","gametype":"R","players":{"2":"100002913406085,Prabir Kumar D,6sq6","1":"100003264774181,Avinash S,twyq"},"turnuid":"100002913406085","score":{"2":"0","1":"18"},"playerscount":2,"dic":"twl","active":"y","canforcewin":"n","showmsg":"n","lastmove":"HIDE,r,18","gameid":"85030616","tilesinbag":"68"},{"lastupdate":"2012-01-17 13:50:55","gametype":"R","players":{"2":"100000145226351,Sayak K,0r9o","1":"100003264774181,Avinash S,kltv"},"turnuid":"100000145226351","score":{"2":"0","1":"26"},"playerscount":2,"dic":"twl","active":"y","canforcewin":"n","showmsg":"n","lastmove":"BOX,r,26","gameid":"85030764","tilesinbag":"68"}]} 

мой xml имеет линейное расположение >> макет кадра >> вид прокрутки >> линейный макет-- android: ориентация = "горизонтальный">> текстовое представление

в настоящее время я использую это, но застрял ..

JSONObject jresponse=response.getJsonResponseFor(myRequest);

                String result=jresponse.toString();
                System.out.println(" jresponse is here  "+jresponse.toString());


                JSONArray jArray = jresponse.getJSONArray("games");
                int max=jArray.length();
                System.out.println("array length::"+max);

                for (int j = 0; j < max; j++)
                   {

                JSONObject obj = jArray.getJSONObject(j);
                JSONArray names = obj.names();

                for (int k = 0; k < names.length(); k++) 
                    {
                        String name = names.getString(k);
                      String value= obj.getString(name);
                           createtableLayout();  
                    }

                   }

createtableLayout() должен динамически добавлять данные в xml.

Пожалуйста, помогитеменя по этому поводу.

Ответы [ 3 ]

0 голосов
/ 19 января 2012

хорошо, затем добавьте макет в ваш XML и получите ссылку на этот макет в качестве поля в действии, Создайте вид как:

для макетов:

LinearLayout ll = новый LinearLayout (this);

для установки параметров макета при просмотре или использовании макета:

ll.setLayoutParams (новые LayoutParams (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

пример создания представлений,

TextView txt = new TextView (это); txt.setText (имя);

Чтобы добавить вид в макет, используйте: ll.addView (TXT);

чтобы добавить макет в родительский макет, используйте: parent.addView (LL);

0 голосов
/ 19 января 2012

используйте метод, подобный следующему,

holder=(LinearLayout)findViewById(R.id.GameListHolder);
JSONObject jresponse=response.getJsonResponseFor(myRequest);

                String result=jresponse.toString();
                System.out.println(" jresponse is here  "+jresponse.toString());


                JSONArray jArray = jresponse.getJSONArray("games");
                int max=jArray.length();
                System.out.println("array length::"+max);

                for (int j = 0; j < max; j++)
                   {

                JSONObject obj = jArray.getJSONObject(j);
                JSONArray names = obj.names();

                for (int k = 0; k < names.length(); k++) 
                    {
                        String name = names.getString(k);
                        String value= obj.getString(name);

                         //Fetch values here      
                         createtableLayout(opponentName, lastMove,points, time, sinceLastMove, whose turn);  
                    }

                   }


    public void createtableLayout(String opponentName, String lastMove, String points, 
                   String time, String sinceLastMove, String whoseTurn)
    {
         LinearLayout ll=new LinearLayout(this);
         LinearLayout.LayoutParams params=new                                                     LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
         TextView txtOppName=new TextView(this);
         txtOppName.setText(txtOppName);
         ll.addView(txtOppName);

TextView txtOppName=new TextView(this);
         txtOppName.setText(txtOppName);
         ll.addView(txtOppName);
          ......

       holder.addView(ll);
}
    }
0 голосов
/ 19 января 2012

Вам не нужно динамически добавлять данные в XML.Вы можете просто создать базовый макет в XML.

Вы можете получить этот макет, используя findviewbyid, а затем продолжать добавлять данные, используя Java для этого макета.

Вы можете найти множество примеров создания / добавления макетов в java.

...