2016-11-19 74 views
-3

我有這樣的json格式的一些數據。用隱藏字段創建android listview

{ 
    "data": [ 
    { 
     "name": "Online Earning", 
     "id": "172970482777411" 
    }, 
    { 
     "name": "U Wanna Be My Friend", 
     "id": "193618510697929" 
    }, 
    { 
     "name": "Photos That Will Take Your Breath Away", 
     "id": "102241993216852" 
    }, 
    { 
     "name": "Dashing Mee", 
     "id": "218061968291332" 
    }, 
    { 
     "name": "I want to be a good Muslim", 
     "id": "144132975732372" 
    }, 
    { 
     "name": "Aik Dam Jhakaas", 
     "id": "988150887884868" 
    } 
    ] 
} 

我想創建android listview,它只顯示我給定數據的名稱列表。當我點擊列表視圖項時,它應該給我名稱+標識並轉到下一個活動。
請有人寫這個問題的示例代碼。

+0

如果您可以從JSON中提取數據,那麼應該沒有任何困難。並且一旦嘗試自行編寫代碼,如果仍然出現錯誤,那麼發佈錯誤代碼或您面臨的任何問題 – Swr7der

+0

您可以使用recyclerView作爲您的用途。 – Swr7der

+0

我是Android編程初學者,我不明白如何做這個PLZ我想要一個簡短的示例代碼。 –

回答

0

我終於找到了一個簡單的方法來解決這個問題。

  1. 創建一個對象類。
  2. 列表創建該對象類
  3. 創建一個列表視圖
  4. 加入你的對象到ArrayList的
  5. 創建arrayAdapter
  6. SetAdapter列表視圖

就是這樣。

這是我的代碼。

public class PagesList extends Activity { 
     ListView listView; 
     public List<Person> persons; 

     class Person { 
      String name; 
      String age; 


      Person(String name, String age) { 
       this.name = name; 
       this.age = age; 

      } 

      @Override 
      public String toString() { 
       return this.name; 
      } 
     } 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_pages_list); 


      listView = (ListView) findViewById(R.id.PagesList); 
      persons = new ArrayList<>(); 

      listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

       @Override 
       public void onItemClick(AdapterView parent, final View view, int position, long id) { 
        Toast toast = Toast.makeText(getApplicationContext(), persons.get(position).age.toString(), Toast.LENGTH_LONG); 
        toast.show(); 
          } 


      }); 


      /* make the API call */ 
      new GraphRequest(
        AccessToken.getCurrentAccessToken(), 
        "/me/accounts", 
        null, 
        HttpMethod.GET, 
        new GraphRequest.Callback() { 
         public void onCompleted(GraphResponse response) { 
       /* handle the result */ 

          try { 
           JSONArray data = response.getJSONObject().optJSONArray("data"); 
           for (int i = 0; i < data.length(); i++) { 
            JSONObject oneAlbum = data.getJSONObject(i); 

            //get your values  

            persons.add(new Person(oneAlbum.getString("name"), oneAlbum.getString("id"))); 

           } 

           ShowPageList(); 

          } catch (JSONException e) { 
           e.printStackTrace(); 
          } 


         } 
        } 
      ).executeAsync(); 


     } 

     public void ShowPageList(){ 
      ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, persons); 
      listView.setAdapter(adapter); 

     } 

    } 
1

首先讓你的模型類

public class Data 
{ 
    private String id; 

    private String name; 

    public String getId() 
    { 
     return id; 
    } 

    public void setId (String id) 
    { 
     this.id = id; 
    } 

    public String getName() 
    { 
     return name; 
    } 

    public void setName (String name) 
    { 
     this.name = name; 
    } 
} 

public class ListData 
{ 
    private Data[] data; 

    public Data[] getData() 
    { 
     return data; 
    } 

    public void setData (Data[] data) 
    { 
     this.data = data; 
    } 
} 

現在你可以使用GSON到JSON轉換爲Java對象

ListData myObject = gson.fromJson(jsonData, ListData.class); 

現在還可以對列表視圖創建簡單的適配器類。 這裏是網址: Custom Adapter for List View

1

你必須遵循以下步驟:

  1. 根據需要要顯示的項目時,用戶點擊什麼使一類。假設你想在用戶點擊項目(和項目展開)時顯示文本和圖像,然後使用適當的構造函數,getter和setter方法在類中添加文本和圖像。

  2. 製作一個適配器,它可以延伸BaseExpandableListAdapter。這個適配器的好處是,它有像getGroupCount,getChildCount(在你的情況下,孩子數爲2;名稱和ID),isExpanded(對於組視圖,當用戶點擊任何項目時將被調用)等方法等。

  3. 在您的班級中製作ExpandableListView,並在2中創建適配器對象以創建適配器,以便設置ExpandableListView適配器。

這個TutorialExpandableListView會幫助你。