Namdev Londhe Namdev Londhe - 1 month ago 10
Android Question

how to select all checkbox in custom listview from activity in android

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();

}


}

Answer

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();
}
}}