I have a custom list with two two textviews and a delete button. I want to delete the listview item when I click delete button I have tried these answers delete item from custom listview, Remove selected item from ListView, Remove ListView items in Android with no luck.
This is my Adapter class
public class SpecialListAdapter extends BaseAdapter
{
Activity context;
List<String> id = new ArrayList<String>();
List<String> name = new ArrayList<String>();
List<String> newid = new ArrayList<String>();
List<String> newname = new ArrayList<String>();
ViewHolder holder;
public SpecialListAdapter(Activity context, List<String> id, List<String> name) {
super();
this.context = context;
this.id = id;
this.name = name;
}
public int getCount() {
// TODO Auto-generated method stub
return id.size();
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
private class ViewHolder {
TextView txtViewID;
TextView txtViewName;
ImageButton btnDelete;
}
public View getView(final int position, View convertView, ViewGroup parent)
{
// TODO Auto-generated method stub
LayoutInflater inflater = context.getLayoutInflater();
if (convertView == null)
{
convertView = inflater.inflate(R.layout.special_list_item, null);
holder = new ViewHolder();
holder.txtViewID = (TextView) convertView.findViewById(R.id.specialId);
holder.txtViewName = (TextView) convertView.findViewById(R.id.specialName);
holder.txtViewID.setText(id.get(position));
holder.txtViewName.setText(name.get(position));
holder.btnDelete = (ImageButton) convertView.findViewById(R.id.bDelete);
holder.btnDelete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
id.remove(position);
name.remove(position);
notifyDataSetChanged();
}
});
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
return convertView;
}
}
Edit
Error Log:
12-18 17:39:46.030: D/AndroidRuntime(17893): Shutting down VM
12-18 17:39:46.030: W/dalvikvm(17893): threadid=1: thread exiting with uncaught exception (group=0x40dc3930)
12-18 17:39:46.053: E/AndroidRuntime(17893): FATAL EXCEPTION: main
12-18 17:39:46.053: E/AndroidRuntime(17893): java.lang.UnsupportedOperationException
12-18 17:39:46.053: E/AndroidRuntime(17893): at java.util.AbstractList.remove(AbstractList.java:638)
12-18 17:39:46.053: E/AndroidRuntime(17893): at java.util.AbstractList$SimpleListIterator.remove(AbstractList.java:75)
12-18 17:39:46.053: E/AndroidRuntime(17893): at java.util.AbstractCollection.remove(AbstractCollection.java:229)
12-18 17:39:46.053: E/AndroidRuntime(17893): at .SpecialListAdapter$1.onClick(SpecialListAdapter.java:83)
12-18 17:39:46.053: E/AndroidRuntime(17893): at android.view.View.performClick(View.java:4202)
12-18 17:39:46.053: E/AndroidRuntime(17893): at android.view.View$PerformClick.run(View.java:17340)
12-18 17:39:46.053: E/AndroidRuntime(17893): at android.os.Handler.handleCallback(Handler.java:725)
12-18 17:39:46.053: E/AndroidRuntime(17893): at android.os.Handler.dispatchMessage(Handler.java:92)
12-18 17:39:46.053: E/AndroidRuntime(17893): at android.os.Looper.loop(Looper.java:137)
12-18 17:39:46.053: E/AndroidRuntime(17893): at android.app.ActivityThread.main(ActivityThread.java:5039)
12-18 17:39:46.053: E/AndroidRuntime(17893): at java.lang.reflect.Method.invokeNative(Native Method)
12-18 17:39:46.053: E/AndroidRuntime(17893): at java.lang.reflect.Method.invoke(Method.java:511)
12-18 17:39:46.053: E/AndroidRuntime(17893): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
12-18 17:39:46.053: E/AndroidRuntime(17893): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
12-18 17:39:46.053: E/AndroidRuntime(17893): at dalvik.system.NativeStart.main(Native Method)