在列表视图中使用复选框并获取它们的值 android

Use checkbox in listview and get the value of them android

我正在开发一个应用程序,它通过 j-son 从服务器获取图片,并在列表视图中将它们显示给用户,他们可以通过复选框选择一些图片进行下载。

我想使用 2 个数组列表:

我的问题是我不太了解列表视图。特殊行的复选框必须在用户单击该行时更改,以及如何从列表视图中获取复选框值(更重要)。

 void pics(JSONArray data){
   String url;int i;
   for (i=0;i<data.length();i++){
       try {
           String u=data.getJSONObject(i).getJSONObject("images").getJSONObject("res2").getString("url");
           String t=data.getJSONObject(i).getJSONObject("images").getJSONObject("resolution1").getString("url");
           myList.add(t);
           Lists.add(u);
           url=data.getJSONObject(i).getString("type");
         if (url.equals("video"))
             continue;
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
   }
   try {
    if(i<data.length()){
       String t=data.getJSONObject(i).getJSONObject("videos").getJSONObject("standard_resolution").getString("url");
       myList.set(i, t);}
    else{


    }
   } catch (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}


}

您可以创建一个 ModelClass ImageData

class ImageData {
   private String url;
   private boolean isChecked;

   public void setChecked(boolean checked) {
       this.ischecked         = checked;
   }

   public void setUrl(String url) {
       this.url               = url;
   }

   public boolean isChecked() {
       return ischecked;
   }

   public String getUrl() {
       return url;
   }
}

保存此模型中的 json class 并添加到 arraylist。在您的适配器中传递它并相应地绑定视图。当用户单击列表项时,更改相应模型的 isChecked 值 class。单击事件可以在 baseadapter class 的 getView 方法

中处理

如果实现了 listitemclick 设置

android:focusable="false"
android:focusableInTouchMode="false"

在XML

您可以使用@SKT 建议的模型来实现。 您可以将图像数据类型的列表创建为-

List<ImageData> imagedatas= new ArrayList<>();

现在您可以在 for 循环中添加图像数据的实例,如-

ImageData imageData = new ImageData();
imageData.setUrl(u);

现在您需要创建自定义适配器,如果您尚未创建并且需要在 CheckBox 上设置选中的 OnCheckedChangeListener 并且需要修改 ImageData 模型的值因此。