In the list Items, there is a button "delete" and textview.. on click of delete button in list item I am deleting that particular list item.. but My question is:that delete button is invisible at the start and when user click on "edit" button shown below at the top of the screen, I want to make all the buttons from invisible to visible.. But I am not getting how to implement that..
ListViewAdapater.java :
public class ListViewAdapter extends BaseAdapter {
public ArrayList<String> list;
Context context;
private LayoutInflater mInflater;
int count = 0;
static int list_size;
public ListViewAdapter(Context context, ArrayList<String> list) {
super();
this.context = context;
this.list = list;
mInflater = LayoutInflater.from(context);
list_size = list.size();
}
public int getCount() {
if (list == null) {
return 0;
} else {
return list_size;
}
}
@Override
public Object getItem(int position) {
Log.i("Calling getItem()", "getItem()");
return list.get(position);
}
@Override
public long getItemId(int position) {
Log.i("Calling getItemId()", "getItemId()");
return position;
}
static class ViewHolder {
TextView notes_text;
static Button delete;
}
// @Override
public View getView(int position, View convertView, ViewGroup parent) {
Log.i("ListViewAdapter is calling...", "calling...");
ViewHolder holder;
Log.i("View to be converted", "" + convertView);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.simplerow, null);
Log.i("View to be converted", "" + convertView);
holder = new ViewHolder();
holder.notes_text = (TextView) convertView.findViewById(R.id.rowTextView);
holder.delete = (Button) convertView.findViewById(R.id.btn_minus);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.notes_text.setText((String) list.get(position));
holder.delete.setTag((Integer) position);
holder.delete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Integer myIntegerObject = new Integer((Integer) view.getTag());
Log.i("Integer postioton", "" + myIntegerObject.intValue());
list.remove(list.indexOf(list.get(myIntegerObject.intValue())));
list_size = list.size();
notifyDataSetChanged();
}
});
return convertView;
}
}
Keep a boolean flag to indicate edit mode. In ListAdapter
's getView()
set Button
visibility to VISIBLE
or GONE
depending on your boolean flag.
Now, to toggle all button visibility you have so change boolean flag, and call notifyDataSetChanged()
on adapter. This will re-draw all visible List Items.
add variable in adapter class:
boolean editmode = false;
In getView()
:
holder.delete.setVisibility( (editmode ? View.VISIBLE : View.GONE ) );
finally add a method to your adapter class:
public void setEditMode(boolean value){
editmode = value;
this.notifyDataSetChanged();
}