如何从Android的活动选择自定义列表视图中的所有复选框 [英] how to select all checkbox in custom listview from activity in android

查看:186
本文介绍了如何从Android的活动选择自定义列表视图中的所有复选框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个自定义列表视图这两个内容的TextView和一个复选框。当复选框被选中,那么ID存储在数据库中,如果不加以控制则id从数据库中删除。但是,我要选择所有的复选框和所有ID存储到数据库或取消选中所有的复选框,并从数据库中删除所有ID。正好我要实现这个东西。请帮助我,这是我的适配器code

 公共类InviteListAdapter2扩展BaseAdapter实现OnClickListener {私有静态最后弦乐TAG =GroupEditMemberListAdapter;私人LayoutInflater吹气;
私人ViewHolder持有人;
私人列表< FriendItem>清单;
私人上下文的背景下;
私人ImageLoader的ImageLoader的;
MessageSendingActivity味精=新MessageSendingActivity();
私人字符串的groupId;
SqliteHandle sqhandle;
//私人字符串adminId;
INT total_contacts = 0;
串F_ID;
INT标志= 0;
串chetimeslot;
ArrayList的<串GT; currentList =新的ArrayList<串GT;();
公共静态最后弦乐DELETE_MEMBER =2;
公共静态最后弦乐ADD_MEMBER =1;公共InviteListAdapter2(上下文的背景下,列表与LT; FriendItem>列表中,字符串的groupId,字符串adminId){
    this.context =背景;
    充气= LayoutInflater.from(上下文);
    this.list =清单;
    ImageLoader的=新ImageLoader的(上下文);
    this.groupId =的groupId;
    //this.adminId = adminId;
}公众的ArrayList<串GT; getChekedItem()
{
    如果(currentList!= NULL)
    返回this.currentList;
    否则返回NULL;
}
@覆盖
公众诠释的getCount(){
    返回则为list.size();
}@覆盖
公共对象的getItem(INT位置){
    返回list.get(位置);
}@覆盖
众长getItemId(INT位置){
    返回list.indexOf(的getItem(位置));
}公共无效刷新(列表< FriendItem>名单){
    this.list =清单;
    notifyDataSetChanged();
}公开名单< FriendItem>的GetList(){
    返回列表;
}查看hView;ArrayList的< CheckedItem> checkbox_timeslot =新的ArrayList< CheckedItem>();
@覆盖
公共查看getView(最终诠释的立场,观点convertView,父母的ViewGroup){    hView = convertView;    最后FriendItem项目= list.get(位置);    如果(convertView == NULL){        持有人=新ViewHolder();        hView = inflater.inflate(R.layout.friendlistitem,NULL);
        holder.nameTextView =(TextView中)hView.findViewById(R.id.friend_name_text);
        holder.statusTextView =(TextView中)hView.findViewById(R.id.friend_count_text);
        holder.userImageView =(ImageView的)hView.findViewById(R.id.friend_image);
        holder.checkBox =(复选框)hView.findViewById(R.id.chekbox);        hView.setTag(保持器);
    }
    其他{
        支架=(ViewHolder)hV​​iew.getTag();
    }    尝试{
            holder.nameTextView.setText(+ item.getName()++ item.getLname());
            holder.statusTextView.setText(+ item.getContacts());            字符串路径=htt​​p://www.gbggoa.org/testproject/four/images/pic.jpg;
            PATH = Constant.URL + item.getImage();
            imageLoader.displayImage(路径,holder.userImageView);            如果(item.getId()。等于(Sessions.getUserId(上下文)))
            {
                holder.checkBox.setVisibility(View.GONE);
            }
            其他
            {
                holder.checkBox.setVisibility(View.VISIBLE);
            }            如果(item.isChecked())
            {
                holder.checkBox.setChecked(真);                如果(item.getId()。等于(Sessions.getUserId(上下文)))
                {
                    hView.setBackgroundResource(R.drawable.selector_list_gray);
                }
                其他
                {
                    hView.setBackgroundResource(R.drawable.selector_list_green);
                }
            }
            其他
            {
                holder.checkBox.setChecked(假);
                hView.setBackgroundResource(R.drawable.selector_list);
            }            holder.checkBox.setTag(位置);
            holder.checkBox.setOnClickListener(本);    }赶上(例外五){
        e.printStackTrace();
    }    返回hView;
}类ViewHolder
{
    TextView的nameTextView,statusTextView;
    ImageView的userImageView;
    复选框复选框;
}保护无效showToast(字符串消息){
    Toast.makeText(上下文,+消息,Toast.LENGTH_SHORT).show();
}保护无效showToastLong(字符串消息){
    Toast.makeText(上下文,+消息,Toast.LENGTH_LONG).show();
}@覆盖
公共无效的onClick(查看视图){    最终诠释位置=(整数)view.getTag();
    字符串F_ID = list.get(位置).getId();
    最后复选框复选框=(复选框)view.findViewById(R.id.chekbox);
    sqhandle =新SqliteHandle(背景);
    最终布尔=器isChecked checkBox.isChecked();
    INT总= sqhandle.getCheckedCount();
    checkBox.setVisibility(View.GONE);
    如果(器isChecked)
    {
        total_contacts = total_contacts +的Integer.parseInt(list.get(位置).getContacts());
        sqhandle.changeCheck(1,F_ID);
        Toast.makeText(背景下,选择的联系方式:+ total_contacts,Toast.LENGTH_LONG).show();    }
    其他
    {
        sqhandle.changeCheck(0,F_ID);
        total_contacts = total_contacts - 的Integer.parseInt(list.get(位置).getContacts());
        Toast.makeText(背景下,选择的联系方式:+ total_contacts,Toast.LENGTH_LONG).show();
    }
    sqhandle.close();
    checkBox.setVisibility(View.VISIBLE);
    list.get(位置).setChecked(器isChecked);
    notifyDataSetChanged();}
}


解决方案

使用ArrayList来存储你的项目的ID

 的ArrayList<整数GT; tcontact =新的ArrayList<整数GT;();
 如果(器isChecked)
    {
         tcontact.add(的Integer.parseInt(list.get(位置).getContacts()))
        sqhandle.changeCheck(1,F_ID);
        Toast.makeText(背景下,选择的联系方式:+ total_contacts,Toast.LENGTH_LONG).show();    }
    其他
    {
      的for(int i = 0; I< tcontact.size;我++){
      如果(tcontact.get(I)==的Integer.parseInt(list.get(位置).getContacts())){
      tcontact.remove(ⅰ);
      sqhandle.changeCheck(0,F_ID);        Toast.makeText(背景下,选择的联系方式:+ total_contacts,Toast.LENGTH_LONG).show();
}
}}

I have a custom listview which content two textview and one checkbox. When checkbox is checked then id is stored in the database and if unchecked then id is removed from database. But I want to select all checkboxes and store all ids into database or uncheck all checkboxes and remove all ids from database. What exactly i have to implement for this. please help me this is my adapter code

public class InviteListAdapter2 extends BaseAdapter implements OnClickListener {

private static final String TAG = "GroupEditMemberListAdapter";

private LayoutInflater inflater;
private ViewHolder holder;
private List<FriendItem> list;
private Context context;
private ImageLoader imageLoader;
MessageSendingActivity msg = new MessageSendingActivity();
private String groupId;
SqliteHandle sqhandle;
//private String adminId;
int total_contacts=0;
String f_id;
int flag=0;
String chetimeslot;
ArrayList<String> currentList = new ArrayList<String>();
public static final String DELETE_MEMBER = "2";
public static final String ADD_MEMBER = "1";

public InviteListAdapter2(Context context, List<FriendItem> list, String groupId, String adminId) {
    this.context = context;
    inflater = LayoutInflater.from(context);
    this.list = list;
    imageLoader = new ImageLoader(context);
    this.groupId = groupId;
    //this.adminId = adminId;
}   

public ArrayList<String> getChekedItem()
{
    if(currentList!=null)
    return this.currentList;
    else return null;
}
@Override
public int getCount() {
    return list.size();
}

@Override
public Object getItem(int position) {
    return list.get(position);
}

@Override
public long getItemId(int position) {
    return list.indexOf(getItem(position));
}

public void refresh(List<FriendItem> list) {
    this.list = list;
    notifyDataSetChanged();
}

public List<FriendItem> getList() {
    return list;
}

View hView;

ArrayList<CheckedItem> checkbox_timeslot = new ArrayList<CheckedItem>();
@Override
public View getView(final int position, View convertView, ViewGroup parent) {

    hView = convertView;

    final FriendItem item = list.get(position);

    if (convertView == null) {

        holder = new ViewHolder();

        hView = inflater.inflate(R.layout.friendlistitem, null);
        holder.nameTextView         = (TextView) hView.findViewById(R.id.friend_name_text);
        holder.statusTextView       = (TextView) hView.findViewById(R.id.friend_count_text);
        holder.userImageView        = (ImageView) hView.findViewById(R.id.friend_image);
        holder.checkBox             = (CheckBox) hView.findViewById(R.id.chekbox);

        hView.setTag(holder);
    }
    else {
        holder = (ViewHolder) hView.getTag();
    }

    try {
            holder.nameTextView.setText(""+item.getName() + " " +item.getLname());
            holder.statusTextView.setText(""+item.getContacts());

            String path = "http://www.gbggoa.org/testproject/four/images/pic.jpg";
            path = Constant.URL  + item.getImage();
            imageLoader.displayImage(path, holder.userImageView);

            if(item.getId().equals(Sessions.getUserId(context)))
            {
                holder.checkBox.setVisibility(View.GONE);
            }
            else
            {
                holder.checkBox.setVisibility(View.VISIBLE);
            }

            if(item.isChecked())
            {
                holder.checkBox.setChecked(true);

                if(item.getId().equals(Sessions.getUserId(context)))
                {
                    hView.setBackgroundResource(R.drawable.selector_list_gray);
                }
                else
                {
                    hView.setBackgroundResource(R.drawable.selector_list_green);
                }
            }
            else
            {
                holder.checkBox.setChecked(false);
                hView.setBackgroundResource(R.drawable.selector_list);
            }   

            holder.checkBox.setTag(position);
            holder.checkBox.setOnClickListener(this);

    } catch (Exception e) {
        e.printStackTrace();
    }

    return hView;
}   

class ViewHolder
{   
    TextView nameTextView, statusTextView;
    ImageView userImageView;
    CheckBox checkBox;
}

protected void showToast(String message) {
    Toast.makeText(context, ""+message, Toast.LENGTH_SHORT).show();
}

protected void showToastLong(String message) {
    Toast.makeText(context, ""+message, Toast.LENGTH_LONG).show();
}   

@Override
public void onClick(View view) {

    final int position = (Integer) view.getTag();
    String f_id=list.get(position).getId();
    final CheckBox checkBox = (CheckBox) view.findViewById(R.id.chekbox);
    sqhandle=new SqliteHandle(context); 
    final boolean isChecked = checkBox.isChecked();
    int total=sqhandle.getCheckedCount();                       
    checkBox.setVisibility(View.GONE);
    if(isChecked)
    {
        total_contacts = total_contacts + Integer.parseInt(list.get(position).getContacts());
        sqhandle.changeCheck("1", f_id);
        Toast.makeText(context, "Selected Contacts: "+total_contacts, Toast.LENGTH_LONG).show();

    }
    else
    {
        sqhandle.changeCheck("0", f_id);
        total_contacts = total_contacts - Integer.parseInt(list.get(position).getContacts());
        Toast.makeText(context, "Selected Contacts: "+total_contacts, Toast.LENGTH_LONG).show();
    }
    sqhandle.close();
    checkBox.setVisibility(View.VISIBLE);
    list.get(position).setChecked(isChecked);
    notifyDataSetChanged();

}


}   

解决方案

use an ArrayList to store your Items Ids

ArrayList<Integer> tcontact = new ArrayList<Integer>();
 if(isChecked)
    {
         tcontact.add(Integer.parseInt(list.get(position).getContacts()))
        sqhandle.changeCheck("1", f_id);
        Toast.makeText(context, "Selected Contacts: "+total_contacts, Toast.LENGTH_LONG).show();

    }
    else
    {
      for(int i=0;i<tcontact.size;i++) {
      if(tcontact.get(i) == Integer.parseInt(list.get(position).getContacts())) {
      tcontact.remove(i);
      sqhandle.changeCheck("0", f_id);

        Toast.makeText(context, "Selected Contacts: "+total_contacts, Toast.LENGTH_LONG).show();
}
}}

这篇关于如何从Android的活动选择自定义列表视图中的所有复选框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆