【问题标题】:Create android listview with hidden fields创建带有隐藏字段的android listview
【发布时间】:2016-11-19 10:01:10
【问题描述】:

我有一些像这样的 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 项目时,它应该给我 name + id 并移至下一个活动。
请有人为此问题编写示例代码。

【问题讨论】:

  • 如果您可以从 JSON 中提取数据,那么应该没有任何困难。并且尝试自己编写代码,如果仍然出现错误,请发布错误代码或您面临的任何问题
  • 你可以使用 recyclerView 来达到你的目的。
  • 我是 android 编程的初学者,我不明白如何做到这一点,我想要一个简短的示例代码。
  • 如果有人回答,对很多初学者会有帮助。
  • 首先寻找Android的JSON解析,然后将解析后的数据在屏幕上随意显示。这里没有人会直接与您分享代码。可以解决阅读本节文档的问题stackoverflow.com/documentation/android/topics

标签: android json listview android-studio


【解决方案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

【讨论】:

    【解决方案2】:

    你必须遵循这个顺序:

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

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

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

    ExpandableListView 中的 Tutorial 可以帮助您。

    【讨论】:

      【解决方案3】:

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

      1. 创建一个对象类。
      2. 为该对象类创建列表
      3. 创建列表视图
      4. 将您的对象添加到该数组列表中
      5. 创建数组适配器
      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);
      
              }
      
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-09
        相关资源
        最近更新 更多