2013-05-24 2 views
1

У меня есть JSON, как показано ниже:как собирать JSON с одинаковым значением в одной точке зрения и других в другой точке зрения и сделать динамическое представление

{ 
"transaksi": { 
     "jenis_link": "unit_link", 
     "rks_ulink": [ 
      { 
       "lji_invest": "Excellink Dynamic Fund", 
       "tgl": "22/05/2013", 
       "harga_unit": "3,581.38", 
       "nilai": "0.000", 
       "total_unit": "0.0000" 
      }, 
      { 
       "lji_invest": "Excellink Aggressive Fund", 
       "tgl": "22/05/2013", 
       "harga_unit": "3,758.73", 
       "nilai": "35,737,078.757", 
       "total_unit": "9,507.7435" 
      } 
     ], 
"ulink": [ 
      { 
       "jumlah_unit": 46.9545, 
       "investasi": "Excellink Aggressive Fund", 
       "harga_unit": 2041.807, 
       "tgl_nab": "25/07/2007", 
       "transaksi": "Alokasi Investasi", 
       "jumlah": 95872 
      }, 
      { 
       "jumlah_unit": 54.722, 
       "investasi": "Excellink Aggressive Fund", 
       "harga_unit": 1827.417, 
       "tgl_nab": "27/08/2007", 
       "transaksi": "Alokasi Investasi", 
       "jumlah": 100000 
      }, 
      { 
       "jumlah_unit": -2.2826, 
       "investasi": "Excellink Aggressive Fund", 
       "harga_unit": 1857.119, 
       "tgl_nab": "17/09/2007", 
       "transaksi": "Penarikan-Potongan Aug 07", 
       "jumlah": 4239 
      }, 

      { 
       "jumlah_unit": 186.3333, 
       "investasi": "Excellink Dynamic Fund", 
       "harga_unit": 2146.691, 
       "tgl_nab": "25/10/2007", 
       "transaksi": "Alokasi Investasi", 
       "jumlah": 400000 
      }, 
      { 
       "jumlah_unit": -7.5143, 
       "investasi": "Excellink Dynamic Fund", 
       "harga_unit": 2185.977, 
       "tgl_nab": "01/11/2007", 
       "transaksi": "Penarikan-Potongan Oct 07", 
       "jumlah": 16426 
      }, 
      { 
       "jumlah_unit": 186.2001, 
       "investasi": "Excellink Dynamic Fund", 
       "harga_unit": 2148.226, 
       "tgl_nab": "26/11/2007", 
       "transaksi": "Alokasi Investasi", 
       "jumlah": 400000 
      }, 
      { 
       "jumlah_unit": -7.5314, 
       "investasi": "Excellink Dynamic Fund", 
       "harga_unit": 2183.127, 
       "tgl_nab": "03/12/2007", 
       "transaksi": "Penarikan-Potongan Nov 07", 
       "jumlah": 16442 
      }, 
      { 
       "jumlah_unit": 183.0457, 
       "investasi": "Excellink Dynamic Fund", 
       "harga_unit": 2185.247, 
       "tgl_nab": "26/12/2007", 
       "transaksi": "Alokasi Investasi", 
       "jumlah": 400000 
      }  ] 
    } 
} 

, как вы видите, несколько JSON "investasi" значения одинаково с "Excellink Dynamic Fund" и другими с "Excellink Aggressive Fund". Я хочу собрать его на базе json json "investasi" с теми же значениями, но мои проблемы в том, что я не знаю, как их собрать в одном представлении, а другие в других. для деталей я ENCLOSURE два изображения:

JSON "investasi" значения одинаковы с "Excellink Dynamic Fund"

enter image description here

под этой точкой зрения является JSON "investasi" значения одинаковы с "Excellink Aggressive Fund"

enter image description here

до сих пор я имеют два макета, первый макет содержит listview:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:background="@color/medium_gray"> 
    <TextView 
       android:id="@+id/title" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:textSize="20sp" 
       android:textColor="#FF0000" 
       android:text="TRANSAKSI" 
       android:textStyle="bold" 
       android:divider="#000000" 
       android:dividerHeight="1dp" 
       android:layout_marginTop="8dp"/> 

    <TableRow 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"> 

     <LinearLayout 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      style="@style/size10ptWhite3dpBold" 
      android:layout_width="0dip" 
      android:layout_weight=".35" 
      android:gravity="left" 
      android:orientation="vertical" 
      android:paddingTop="5dip" 
      android:paddingBottom="10dip"> 

     <!--Kolom 1--> 
     <TextView 
      android:text="Transaksi" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:textColor="#FFFFFF" 
      android:textSize="17sp" 
      android:paddingTop="10dip" 
      android:paddingBottom="10dip" /> 

    </LinearLayout> 

     <!-- Kolom 2 --> 
     <LinearLayout 
       xmlns:android="http://schemas.android.com/apk/res/android" 
       style="@style/size10ptWhite3dpBold" 
       android:layout_width="0dip" 
       android:layout_weight=".35" 
       android:orientation="vertical" 
       android:paddingTop="5dip" 
       android:paddingBottom="10dip" > 

     <TextView 
      android:text="Jumlah" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:textColor="#FFFFFF" 
      android:textSize="14sp" 
      android:paddingTop="10dip" 
      android:paddingBottom="10dip" 
      android:gravity="center" /> 

     <TextView 
      android:text="Tanggal" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:textColor="#b5b5b5" 
      android:textSize="14sp" 
      android:gravity="center" 
      android:paddingBottom="10dip"/> 
    </LinearLayout> 

     <!-- Kolom 3 --> 
    <LinearLayout 
       xmlns:android="http://schemas.android.com/apk/res/android" 
       style="@style/size10ptWhite3dpBold"    
       android:layout_width="0dip" 
       android:layout_weight=".30" 
       android:orientation="vertical" 
       android:paddingTop="5dip" 
       android:paddingBottom="10dip"> 

     <TextView 
      android:id="@+id/jumlah_unit" 
      android:text="Jumlah Unit" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:textColor="#FFFFFF" 
      android:textSize="14sp" 
      android:paddingTop="10dip" 
      android:paddingBottom="10dip" 
      android:gravity="right"/> 

     <TextView 
      android:id="@+id/harga_unit" 
      android:text="Harga Unit" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:textSize="14sp" 
      android:textColor="#b5b5b5" 
      android:gravity="right" 
      android:paddingBottom="10dip"/> 

    </LinearLayout> 

     </TableRow> 
     <LinearLayout 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content"> 
       <include layout="@layout/line"/> 
      </LinearLayout> 

     <ListView 
     android:id="@android:id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:divider="#000000" 
     android:dividerHeight="1dp" 
     android:focusable="false" 
     android:clickable="false"/> 

</LinearLayout> 

второй макет для значения JSON:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal" 
    android:background="@color/medium_gray"> 

    <LinearLayout 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      style="@style/size10ptWhite3dpBold" 
      android:layout_width="0dip" 
      android:layout_weight=".33" 
      android:gravity="left" 
      android:orientation="vertical" 
      android:paddingTop="5dip" 
      android:paddingBottom="10dip"> 

     <!--Kolom 1--> 
     <TextView 
      android:id="@+id/transaksi" 
      android:text="1" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:textColor="#FFFFFF" 
      android:textSize="17sp" 
      android:paddingTop="10dip" 
      android:paddingBottom="10dip" /> 

    </LinearLayout> 

     <!-- Kolom 2 --> 
     <LinearLayout 
       xmlns:android="http://schemas.android.com/apk/res/android" 
       style="@style/size10ptWhite3dpBold" 
       android:layout_width="0dip" 
       android:layout_weight=".33" 
       android:orientation="vertical" 
       android:paddingTop="5dip" 
       android:paddingBottom="10dip" > 

     <TextView 
      android:id="@+id/jumlah" 
      android:text="Jumlah" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:textColor="#FFFFFF" 
      android:textSize="14sp" 
      android:paddingTop="10dip" 
      android:paddingBottom="10dip" 
      android:gravity="center" /> 

     <TextView 
      android:id="@+id/tanggal" 
      android:text="Tanggal" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:textColor="#b5b5b5" 
      android:textSize="14sp" 
      android:gravity="center" 
      android:paddingBottom="10dip"/> 
    </LinearLayout> 

     <!-- Kolom 3 --> 
    <LinearLayout 
       xmlns:android="http://schemas.android.com/apk/res/android" 
       style="@style/size10ptWhite3dpBold"    
       android:layout_width="0dip" 
       android:layout_weight=".33" 
       android:orientation="vertical" 
       android:paddingTop="5dip" 
       android:paddingBottom="10dip"> 

     <TextView 
      android:id="@+id/jumlah_unit" 
      android:text="Jumlah Unit" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:textColor="#FFFFFF" 
      android:textSize="14sp" 
      android:paddingTop="10dip" 
      android:paddingBottom="10dip" 
      android:gravity="right"/> 

     <TextView 
      android:id="@+id/harga_unit" 
      android:text="Harga_Unit" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:textSize="14sp" 
      android:textColor="#b5b5b5" 
      android:gravity="right" 
      android:paddingBottom="10dip"/> 

    </LinearLayout> 

</LinearLayout> 

это, как я разобрать мой JSON:

 JSONObject jsonObject = new JSONObject(result); 

          JSONObject transaksi = jsonObject.getJSONObject("transaksi"); 
          for (int i=0; i<transaksi.length();i++){ 
          String jenis_link = transaksi.getString("jenis_link"); 

RingkasanUlinkVariabel VarRKS = null; 
          JSONArray rks_ulink = transaksi.getJSONArray("rks_ulink"); 
          for (int j=0; j<rks_ulink.length();j++){ 
           JSONObject rks = rks_ulink.getJSONObject(j); 
           VarRKS= new RingkasanUlinkVariabel(rks.optString("lji_invest"), 
             rks.optString("total_unit"), 
             rks.optString("harga_unit"), 
             rks.optString("nilai"), 
             rks.optString("tgl")); 
           ListRingkasan.add(VarRKS); 
           System.out.println("Adam levine"); 

          } 
           UnitLinkVariabel VarUnit = null; 
          JSONArray ulink = transaksi.getJSONArray("ulink"); 
          for (int k=0; k<ulink.length();k++){ 
          JSONObject unit = ulink.getJSONObject(k); 
          VarUnit= new UnitLinkVariabel(unit.optString("investasi"), 
            unit.optString("transaksi"), 
            unit.optString("jumlah"), 
            unit.optString("tgl_nab"), 
            unit.optString("jumlah_unit"), 
            unit.optString("harga_unit")); 
          ListUnitLink.add(VarUnit); 

так как собрать JSON с одинаковым значением в одной точке зрения, а другие в другой точке зрения и сделать динамический вид в одном макете? я надеюсь, что кто-то может помочь мне решить мою проблему

ответ

1

Попробуйте это:

//Declare a different list for containing the UnitLinkVariabel 
//one for the "Aggressive" and one for the "Dynamic" 
List ListUnitLinkEAF = new ArrayList<UnitLinkVariabel>(); 
List ListUnitLinkEDF = new ArrayList<UnitLinkVariabel>(); 

//Declare the handler for each UnitLinkVariabel, 
//again, one for Aggressive, one for Dynamic 
UnitLinkVariabel VarUnitEAF = null; 
UnitLinkVariabel VarUnitEDF = null; 

Под:

for (int k=0; k<ulink.length();k++){ 
     JSONObject unit = ulink.getJSONObject(k); 

добавить проверку, как это:

  if (unit.optString("investasi").equals("Excellink Aggressive Fund") { 
      VarUnitEAF = new UnitLinkVariabel(unit.optString("transaksi"), 
          unit.optString("jumlah"), 
          unit.optString("tgl"), 
          unit.optString("jumlah_unit"), 
          unit.optString("harga_unit")); 
      ListUnitLinkEAF.add(VarUnitEAF); 
     } else if (unit.optString("investasi").equals("Excellink Dynamic Fund") { 
      VarUnitEDF = new UnitLinkVariabel(unit.optString("transaksi"), 
          unit.optString("jumlah"), 
          unit.optString("tgl"), 
          unit.optString("jumlah_unit"), 
          unit.optString("harga_unit")); 
      ListUnitLinkEDF.add(VarUnitEDF); 
     } 

Теперь вам имеют 2 списка, один с Excellink Aggressive Fund or (EAF), и один с Excellink Dynamic Fund or (EDF)

Теперь вам нужно поместить каждый список в ListView, если вы хотите, чтобы оба они отображались, подготовить 2 списка, один для EAF и один для EDF. Я оставлю вас с вставкой данных в listView.

Good Luck :)

EDIT

использование Set<String>, чтобы получить значения Investasi, прочитать все записи из UnitLinkVariabel, и поставить все строки в Investasi внутри Set.

Как вы знаете, у Set не может быть дубликатов, так что это то, что вы ищете.

Вот некоторые сниппет:

//Declare the set 
Set<String> investasi = new LinkedHashSet<String>(); 

теперь прочитать все Investasi и добавить его в investasi

for (int k=0; k<ulink.length();k++){ 
     JSONObject unit = ulink.getJSONObject(k); 
     investasi.add(unit.optString("investasi")); 
    } 

Тогда для каждого investasi, сделать что-то:

for (String jenisInvestasi : investasi) { 
    for (int k=0; k<ulink.length();k++){ 
     JSONObject unit = ulink.getJSONObject(k); 
     if (unit.optString("investasi").equals(jenisInvestasi)) { 
      //insert into list 
     } 
} 

Там в логику, вы должны сами найти остальную часть кода, g ООД удачи: D

+0

хорошо, это так близко к тому, что мне нужно, но ценность от «investasi» не просто «Excellink Aggressive Fund» и «Excellink dynamic Fund», потому что ценность от «investasi» неограничена. так как решить проблему вроде этого? и как я могу подготовить listview с этим условием? спасибо –

+0

Что вы подразумеваете под неограниченным? приведенный выше код проверяет каждую UnitLink перед тем, как вставить ее в список. Если 'unitLink' является EAF, вставьте его в' ListUnitLinkEAF', как вы используете список в первую очередь? – reidzeibel

+0

Я имею в виду значение, которое я получил от «investasi», возможно не просто «Excellink Aggressive Fund» и «Excellink dynamic Fund», это возможно и другие ценности, такие как «долларовый фонд», «фонд рупии» или т. Д., Потому что продукт от «investasi» «так много, поэтому я хочу сделать его динамическим, а не статическим –

0

для ручки это я сделал, как ниже некоторой логики:

  1. добавить два новых списка массива они:

частных ArrayList StringUnit []; // для списка массива дескрипторов, который я разделил private ArrayList kelompok; // для списка массивов массивов

this is how i parse my json : 



JSONObject jsonObject = new JSONObject(result); 

           JSONObject transaksi = jsonObject.getJSONObject("transaksi"); 
           for (int i=0; i<transaksi.length();i++){ 
           String jenis_link = transaksi.getString("jenis_link"); 

    RingkasanUlinkVariabel VarRKS = null; 
           JSONArray rks_ulink = transaksi.getJSONArray("rks_ulink"); 
           for (int j=0; j<rks_ulink.length();j++){ 
            JSONObject rks = rks_ulink.getJSONObject(j); 
            VarRKS= new RingkasanUlinkVariabel(rks.optString("lji_invest"), 
              rks.optString("total_unit"), 
              rks.optString("harga_unit"), 
              rks.optString("nilai"), 
              rks.optString("tgl")); 
            ListRingkasan.add(VarRKS); 
            System.out.println("Adam levine"); 

           } 
            UnitLinkVariabel VarUnit = null; 
            JSONArray ulink = transaksi.getJSONArray("ulink"); 
            for (int k=0; k<ulink.length();k++){ 
            JSONObject unit = ulink.getJSONObject(k); 
            VarUnit= new UnitLinkVariabel(unit.optString("investasi"),unit.optString("transaksi"), 
              unit.optString("jumlah"), 
              unit.optString("tgl"), 
              unit.optString("jumlah_unit"), 
              unit.optString("harga_unit")); 
            ListUnitLink.add(VarUnit); 

            // this is how i divide my arraylist and collect them 

            String[] mStringArray = new String[ListUnitLink.size()]; 
            mStringArray = ListUnitLink.toArray(mStringArray); 

            for(int e= 0; e < mStringArray.length ; e++){ 
             kelompok.add(mStringArray[e]); 
             if (mStringArray.optString("investasi") == mStringArray[e-1].optString("investasi")) 
             { 
              StringUnit.add(kelompok); 
             } 

ну, это не конец, потому что у меня есть стек здесь. Я не знаю, моя логика ошибочна или ложна.

+0

У меня уже было представление о том, как это сделать, я отправлю его позже :) – reidzeibel

+0

@reidzeibel хорошо ... я буду ждать ... спасибо до ^^ –

Смежные вопросы