使用隐藏字段创建android listview

时间:2016-11-19 10:01:10

标签: android json listview android-studio

我有一些像json这样的数据。

{
  "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,它只显示我给定数据中的名称列表。当我点击listview项时,它应该给我名字+ id并转到下一个活动。
请有人为此问题编写示例代码。

3 个答案:

答案 0 :(得分: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);

现在,您可以为listview创建简单的适配器类。 这是网址: Custom Adapter for List View

答案 1 :(得分:1)

您必须遵循以下顺序:

  1. 根据用户点击项目时要显示的内容的需要创建课程。假设您想在用户点击项目(和项目展开)时显示文本和图像,然后使用适当的构造函数,getter和setter方法在类中添加文本和图像。

  2. 制作一个扩展BaseExpandableListAdapter的适配器。这个适配器的好处是,它有getGroupCountgetChildCount等方法(在你的情况下,子计数为2; name和id),isExpanded(对于组视图,这将是当用户点击任何项目时调用等等。

  3. 在您的类中创建ExpandableListView,并在2中创建适配器的适配器对象,以设置ExpandableListView适配器。

  4. ExpandableListView public class ItemTypeAdapterFactory implements TypeAdapterFactory { public <T> TypeAdapter<T> create(Gson gson, final TypeToken<T> type) { final TypeAdapter<T> delegate = gson.getDelegateAdapter(this, type); final TypeAdapter<JsonElement> elementAdapter = gson.getAdapter(JsonElement.class); return new TypeAdapter<T>() { public void write(JsonWriter out, T value) throws IOException { delegate.write(out, value); } public T read(JsonReader in) throws IOException { JsonElement jsonElement = elementAdapter.read(in); if (jsonElement.isJsonObject()) { JsonObject jsonObject = jsonElement.getAsJsonObject(); if (jsonObject.has("content")) { jsonElement = jsonObject.get("content"); } } return delegate.fromJsonTree(jsonElement); } }.nullSafe(); } } 会帮助您。

答案 2 :(得分:0)

我终于找到了解决这个问题的简单方法。

  1. 创建一个对象类。
  2. 为该对象类创建列表
  3. 创建列表视图
  4. 将您的对象添加到该arraylist
  5. 创建arrayAdapter
  6. SetAdapter listview
  7. 那就是它。

    这是我的代码。

    curl(curl(rpsi, R), R)