0

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

}

Niraj
  • 107
  • 2
  • 14

2 Answers2

3

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();
            }
        }
    });
Vishal Yadav
  • 3,642
  • 3
  • 25
  • 42
Yyy
  • 2,285
  • 16
  • 29
0

1.remove by position

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

    listStorage.remove(listStorage.get(position));
    
    notifyDataSetChanged();
    
Ramesh Kumar
  • 1,229
  • 14
  • 24
Adnan Maqbool
  • 452
  • 3
  • 10