Niraj
Niraj

Reputation: 107

How to remove items from listview on switch on in android?

I have an app which contain listview with switch button, what i want when switch gets on i want to remove item from listview, I have tried a lot but cannot able to remove item .Please help.

code of adapter:-

private LayoutInflater layoutInflater;
private List<AppList> listStorage;
private Context mContext;
public AppAdapter(Context context, List<AppList> customizedListView) {
    layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    listStorage = customizedListView;
    this.mContext = context;
}

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

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

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

@Override
public View getView(final int position, View convertView, ViewGroup parent) {

    ViewHolder listViewHolder;
    if (convertView == null) {
        listViewHolder = new ViewHolder();
        convertView = layoutInflater.inflate(R.layout.installed_app_list, parent, false);

        listViewHolder.textInListView = (TextView) convertView.findViewById(R.id.list_app_name);
        listViewHolder.imageInListView = (ImageView) convertView.findViewById(R.id.app_icon);
        listViewHolder.switchCompat = (SwitchCompat) convertView.findViewById(R.id.toggleButton);
        convertView.setTag(listViewHolder);
    } else {
        listViewHolder = (ViewHolder) convertView.getTag();
    }
    listViewHolder.textInListView.setText(listStorage.get(position).getName());
    listViewHolder.imageInListView.setImageDrawable(listStorage.get(position).getIcon());
    listViewHolder.switchCompat.setTag(position);

    listViewHolder.switchCompat.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (isChecked) {
                listStorage.get(position).getPackName();
                //here i want to remove item from listview 
            } else {
                Toast.makeText(mContext, "Off", Toast.LENGTH_LONG).show();
            }
        }
    });
    return convertView;
}

static class ViewHolder {
    SwitchCompat switchCompat;
    TextView textInListView;
    ImageView imageInListView;
}

}

Upvotes: 0

Views: 541

Answers (2)

Yyy
Yyy

Reputation: 2335

Remove element as mentioned below: Take a new List to add the removed element to new array, add them globally

List<AppList> newarr = new ArrayList<AppList>();
int newarr_pos = 0;

Updated Code

listViewHolder.switchCompat.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (isChecked) {
                // Add your element to new array
                AppList model = datalist0.get(position);
                newarr.add(newarr_pos,model); 
                newarr_pos++;
                //Then remove it from previous array
                listStorage.remove(position);
                notifyDataSetChanged();
                //here i want to remove item from listview 
            } else {
                Toast.makeText(mContext, "Off", Toast.LENGTH_LONG).show();
            }
        }
    });

Upvotes: 3

Adnan Maqbool
Adnan Maqbool

Reputation: 452

1.remove by position

listStorage.remove(position);
notifyDataSetChanged();
  1. remove by object

    listStorage.remove(listStorage.get(position));
    
    notifyDataSetChanged();
    

Upvotes: 0

Related Questions