【发布时间】:2014-04-17 12:00:56
【问题描述】:
我开发了一个应用程序,它有一个列表视图,并且该列表视图的一项包含一个图像视图、一个文本视图和一个复选框,所以我的问题是如何处理特定列表视图项的复选框选中和未选中事件
列表视图的适配器类
package com.rk.test_facebook;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
public class ListAdapter extends BaseAdapter {
private ArrayList<String> imageUrl;
private final ArrayList<String> name;
private final ArrayList<String> birthday;
private Activity activity;
private static LayoutInflater inflater = null;
public ImageLoader imageLoader;
public ListAdapter(Activity activity, ArrayList<String> imageUrl, ArrayList<String> birthday, ArrayList<String> name) {
this.activity = activity;
this.imageUrl = imageUrl;
this.name = name;
this.birthday = birthday;
inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader = new ImageLoader(activity.getApplicationContext());
}
public int getCount() {
return name.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (convertView == null)
view = inflater.inflate(R.layout.listelement, null);
TextView text = (TextView) view.findViewById(R.id.text);
ImageView image = (ImageView) view.findViewById(R.id.image);
CheckBox checkBox = (CheckBox) view.findViewById(R.id.checkbox);
text.setText((name.get(position)));
imageLoader.DisplayImage(imageUrl.get(position), image);
return view;
}
}
主要活动
package com.rk.test_facebook;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
import java.util.ArrayList;
import Handler.DatabaseHandler;
import Property.FriendsProperty;
/**
* Created by Intex on 15/04/2014.
*/
public class FriedsList extends Activity {
private ListView listView;
public static ArrayList<String> arrayListName = new ArrayList<String>();
public static ArrayList<String> arrayListBirthday = new ArrayList<String>();
public static ArrayList<String> arrayListImage = new ArrayList<String>();
private ListAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.friendslist);
listView = (ListView) findViewById(R.id.ListView);
DatabaseHandler databaseHandler = new DatabaseHandler(this);
ArrayList<FriendsProperty> properties = databaseHandler.DislpayFriends();
for (FriendsProperty friendsProperty : properties) {
arrayListName.add(friendsProperty.getName());
arrayListImage.add(friendsProperty.getImage());
arrayListBirthday.add(friendsProperty.getBirthday());
}
databaseHandler.close();
adapter = new ListAdapter(this, arrayListImage, arrayListBirthday, arrayListName);
listView.setAdapter(adapter);
}
}
【问题讨论】:
-
参考以下链接。这可能会帮助您解决stackoverflow.com/questions/12602426/…
-
为什么要使用 3 个不同的数组列表来处理数据,创建具有所有这些数据类型的自定义类,并使用该类的数组列表
-
@M.J 你想说什么...?
-
我想说你为什么要处理三个数组列表来保存列表视图的行数据,而不是使用 1 个具有自定义模式类的数组列表,其中包含你想要的数据类型。
-
@M.J 感谢您的建议,但我是 android 开发的新手,所以我认为现在我无法实现它,如果您有任何示例,请给我一个链接..
标签: java android listview android-listview android-adapter