Reputation: 107
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
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
Reputation: 452
1.remove by position
listStorage.remove(position);
notifyDataSetChanged();
remove by object
listStorage.remove(listStorage.get(position));
notifyDataSetChanged();
Upvotes: 0