Deepak Rattan
Deepak Rattan

Reputation: 1299

How to access the check box displayed using adapter in the activity containing list view

I am working on the following screen:

New Group screen

The friends list is displayed by populating listview using Base Adapter.

Adapter

  public class Adapter_Friends_Group extends BaseAdapter {
    private Context context;
    private List<Bean_Friends> listBeanFriends;
    private LayoutInflater inflater;
    private ApiConfiguration apiConfiguration;

    public Adapter_Friends_Group(Context context, List<Bean_Friends> listBeanFriends) {
        this.context = context;
        this.listBeanFriends = listBeanFriends;
    }

    @Override
    public int getCount() {
        return listBeanFriends.size();
    }

    @Override
    public Object getItem(int i) {
        return listBeanFriends.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        if (inflater == null) {
            inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }
        if (view == null) {
            view = inflater.inflate(R.layout.feed_item_friends, null);
        }

        //finding different views
        ImageView pic = (ImageView) view.findViewById(R.id.friendsImage);
        TextView txtName = (TextView) view.findViewById(R.id.nameFriends);
        CheckBox chkFriends = (CheckBox) view.findViewById(R.id.chkFriends);

        final Bean_Friends bean_friends = listBeanFriends.get(i);
        String name = bean_friends.getName();
        String url = bean_friends.getUrl();
        String extension = bean_friends.getExtension();
        apiConfiguration = new ApiConfiguration();
        String api = apiConfiguration.getApi();
        String absolute_url = api + "/" + url + "." + extension;

        //loading image into ImageView                                                                                                                                            iew
        Picasso.with(context).load(absolute_url).error(R.drawable.default_avatar).into(pic);

        //Setting name in the textview
        txtName.setText(name);

        chkFriends.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
                Log.e("Checkboxxxxxxxxxx", "Clicked");
                if (isChecked) {
                    bean_friends.setFriendSelected("true");
                    Log.e("Checkbox", "Checked");
                } else {
                    bean_friends.setFriendSelected("false");
                    Log.e("Checkbox", "UnChecked");
                }
                listBeanFriends.add(bean_friends);
            }
        });
        return view;
    }
}

When the check box is clicked,I am saving a string value as true in the Bean.

Bean

public class Bean_Friends {
    private String name, url, extension, friendsID;
    private String friendSelected;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getUrl() {
        return url;
    }

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

    public String getExtension() {
        return extension;
    }

    public void setExtension(String extension) {
        this.extension = extension;
    }

    public String getFriendsID() {
        return friendsID;
    }

    public void setFriendsID(String friendsID) {
        this.friendsID = friendsID;
    }

    public String getFriendSelected() {
        return friendSelected;
    }

    public void setFriendSelected(String friendSelected) {
        this.friendSelected = friendSelected;
    }
}

Now inside the activity containing list view,In want to access the id of the friend whose check box is checked on clicking single tick on the Top Toolbar.

Following method is used on clicking single tick:

public void createNewGroup() {
    Toast.makeText(NewGroupActivity.this, "clicked", Toast.LENGTH_SHORT).show();
    listBeanFriends = new ArrayList<>();
    for (int i = 0; i < listBeanFriends.size(); i++) {
        Log.e("Loop Working", "-------------");
        Bean_Friends bean_friends = listBeanFriends.get(i);
        String friendSelected = bean_friends.getFriendSelected();
        String friendID = bean_friends.getFriendsID();
        Log.e("FriendID", friendID);
        if (friendSelected.equals("true")) {
            Toast.makeText(NewGroupActivity.this, friendID, Toast.LENGTH_SHORT).show();
        } else {
            // Toast.makeText(NewGroupActivity.this,"true",Toast.LENGTH_SHORT).show();
        }
    }
}

But this is mot working for me .I want to access the id of friends whose check box is checked on clicking single tick.Please help me to fix the issue.

Updated Code:

I have done the following changes.Now it is working for me now.

Adapter

    public class Adapter_Friends_Group extends BaseAdapter {
    private Context context;
    public List<Bean_Friends> listBeanFriends;
    private LayoutInflater inflater;
    private ApiConfiguration apiConfiguration;
    private Bean_Friends bean_friends;


    public Adapter_Friends_Group(Context context, List<Bean_Friends> listBeanFriends) {
        this.context = context;
        this.listBeanFriends = listBeanFriends;
    }

    private class ViewHolder {
        ImageView imageView;
        TextView txtName;
        CheckBox chkFriend;
    }

    @Override
    public int getCount() {
        return listBeanFriends.size();
    }

    @Override
    public Object getItem(int i) {
        return listBeanFriends.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {

        ViewHolder viewHolder = null;
        if (inflater == null) {
            inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }
        if (view == null) {
            view = inflater.inflate(R.layout.feed_item_friends, null);
            viewHolder = new ViewHolder();
            viewHolder.imageView = (ImageView) view.findViewById(R.id.friendsImage);
            viewHolder.txtName = (TextView) view.findViewById(R.id.nameFriends);
            viewHolder.chkFriend = (CheckBox) view.findViewById(R.id.chkFriends);
            view.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) view.getTag();
        }

        bean_friends = listBeanFriends.get(i);
        String name = bean_friends.getName();
        String url = bean_friends.getUrl();
        String extension = bean_friends.getExtension();
        apiConfiguration = new ApiConfiguration();
        String api = apiConfiguration.getApi();
        String absolute_url = api + "/" + url + "." + extension;

        //loading image into ImageView                                                                                                                                            iew
        Picasso.with(context).load(absolute_url).error(R.drawable.default_avatar).into(viewHolder.imageView);
        //Setting name in the textview
        viewHolder.txtName.setText(name);
        //Setting boolean isSelected if the Checkbox is checked
        viewHolder.chkFriend.setChecked(bean_friends.isSelected());
        viewHolder.chkFriend.setTag(bean_friends);


        viewHolder.chkFriend.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                CheckBox cb = (CheckBox) view;
                Bean_Friends bean_friends = (Bean_Friends) cb.getTag();
                Toast.makeText(context, "Clicked on Checkbox: " + bean_friends.getName() + " is " + cb.isChecked(), Toast.LENGTH_LONG).show();
                bean_friends.setIsSelected(cb.isChecked());
            }
        });
        return view;
    }
}

Bean

  public class Bean_Friends {
    private String name, url, extension, friendsID;
    boolean isSelected;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getUrl() {
        return url;
    }

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

    public String getExtension() {
        return extension;
    }

    public void setExtension(String extension) {
        this.extension = extension;
    }

    public String getFriendsID() {
        return friendsID;
    }

    public void setFriendsID(String friendsID) {
        this.friendsID = friendsID;
    }

    public boolean isSelected() {
        return isSelected;
    }

    public void setIsSelected(boolean isSelected) {
        this.isSelected = isSelected;
    }
}

Method inside Activity

 public void createNewGroup() {
    StringBuffer responseText = new StringBuffer();
    listBeanFriends = adapter_friends_group.listBeanFriends;
    //  Log.e("Size of adapter_friends", String.valueOf(adapter_friends_group.listBeanFriends.size()));
    Log.e("Size of listbeanFriends", String.valueOf(listBeanFriends.size()));
    for (int i = 0; i < listBeanFriends.size(); i++) {
        Log.e("Loop Working", String.valueOf(i));
        Bean_Friends bean_friends = listBeanFriends.get(i);
        String friendID = bean_friends.getFriendsID();
        String friendName = bean_friends.getName();
        Log.e("FriendsName", friendName);
        Log.e("FriendID", friendID);
        Log.e("FriendSelected", String.valueOf(bean_friends.isSelected()));
        if (bean_friends.isSelected()) {
            responseText.append("\n" + bean_friends.getName() + "  " + bean_friends.getFriendsID());
        }
    }
    Toast.makeText(NewGroupActivity.this, responseText, Toast.LENGTH_SHORT).show();
}

Upvotes: 0

Views: 474

Answers (2)

Parsania Hardik
Parsania Hardik

Reputation: 4623

try replacing this line

listBeanFriends = new ArrayList<>();

with:

List<Bean_Friends> listBeanFriends = new ArrayList<>();
    listBeanFriends = adapter.listBeanFriends;

Upvotes: 1

Related Questions