2016-03-28 156 views
0

填補數據我具有以下JSON格式生成動態數組列表和列表視圖中的Android

{ 
"listing": { 

    "attribute": [{ 
     "name": "brand", 
     "data": [{ 
      "value": "brand with subtitle" 
     }, { 
      "value": "Brand2" 
     }, { 
      "value": "Samsung" 
     }] 
    }, { 
     "name": "price", 
     "data": [{ 
      "value": 12 
     }, { 
      "value": 1499 
     }] 
    }, { 
     "name": "color", 
     "data": [{ 
      "value": "Red" 
     }, { 
      "value": "Green" 
     }] 
    }, { 
     "name": "size", 
     "data": [{ 
      "value": "XXXL" 
     }, { 
      "value": "L" 
     }] 
    }] 
    } 
} 

在上述格式有兩個陣列attibute和數據。所以我的屬性陣列包括我想在列表視圖中顯示,所以我做了這個任務成功見下圖

enter image description here

但多個名字裏面有數據數組列表,針對特定名稱和ArrayList的價值還我要顯示在右側列表視圖意味着如果我點擊品牌那時品牌的價值將顯示在右側列表視圖。我做了以下代碼左側listitem

if (mGetProductListing.getListing().getAttribute().size() > 0) { 
        mainMenuDataArrayList = getData(); 
        if (mainMenuDataArrayList.size() > 0) { 
         mFilterCateAdapter = new FilterCateAdapter(ActivityFilter.this, mainMenuDataArrayList); 
         mListViewLeft.setAdapter(mFilterCateAdapter); 
         mFilterCateAdapter.setSelectedIndex(0); 


        } 
       } 

但我怎麼能列出右側列表項目動態按選擇類別?你的所有建議是可觀的

+0

可能重複http://stackoverflow.com/questions/2250770/how-to-refresh-android-listview。此外,您可以編寫自定義ListView適配器,然後將相應左側列表視圖選擇的JSONArray對象傳遞給適配器中的更新函數,其中您更新了內容並按照上述答案中的步驟操作。 –

+0

晦澀怪胎我沒有得到你所說的,我有動態主類別及其子類,所以我如何處理它的位置明智? –

+0

你是否想要自定義適配器或ArrayAdapter?您需要一個XML文件來爲適配器中的每個項目列表展開視圖。確保添加'ids',以便您可以引用它來分配值。 所以首先提供這個。 1. XML用於項目列表的通貨膨脹。 2.自定義適配器或ArrayAdapter。 – Aizen

回答

0
private List<Attribute> attributeList; 
    private List<AttributeData> dataList; 

    initialise both lists in constructor of adapter. 

    This list contains your json response under tag "attribute" that has "name" and "data" 

    In your custom list adapter under getView() method, 
    convertView.setOnClickListener(new View.OnClickListener() { 

    @Override 
       public void onClick(View v) { 
        if(attributeList.get(position) != null && !attributeList.get(position).getDataList().isEmpty) { 
         dataList.addAll(attributeList.get(position).getDataList); 
//Now pass dataList list to the fragment on the right. 

        } 

    } 
      });