在列表视图中使用复选框并获取它们的值 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
模型的值因此。
我正在开发一个应用程序,它通过 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
模型的值因此。