Hi All,
I am trying to remove an item from listview,
My Listview contains Text and Delete button in each row,
when I click on delete button its removing Last row from List view,
not the actual one which I clicked
Here is the Activity Class:
-----------------------------------------------------------------------------------------------------------------
public class TestListItemsView1Activity extends ListActivity {
/** Called when the activity is first created. */
private EfficientAdapter efficientAdapter;
private static String[] data = new String[] { "BBC", "Yahoo", "CNN",
"Eenadu", "Hindu" };
private static List<String> dataValues = Arrays.asList(data);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
efficientAdapter = new EfficientAdapter(this, dataValues);
setListAdapter(efficientAdapter);
}
@Override
protected void onListItemClick(ListView l, View v, int position,
long id) {
super.onListItemClick(l, v, position, id);
Toast.makeText(this, "Click-" + String.valueOf(position),
Toast.LENGTH_SHORT).show();
}
Here is the Adapter class
-----------------------------------------------------------------------------------------------------------------
public class EfficientAdapter extends BaseAdapter implements
Filterable{
private LayoutInflater mInflater;
private Context context;
final private List<String> data= new ArrayList<String>();
private HashMap<String,EfficientAdapter.ViewHolder> holders= new
HashMap<String, EfficientAdapter.ViewHolder>();
public EfficientAdapter(Context context,List<String> data) {
//super(context, R.layout.main, values);
mInflater = LayoutInflater.from(context);
this.context=context;
this.data.addAll(data);
}
public View getView(final int position, View convertView, ViewGroup
parent) {
ViewHolder holder;
if(convertView == null){
convertView =
mInflater.inflate(R.layout.adaptor_content, null);
holder = new ViewHolder();
holder.textLine = (TextView)
convertView.findViewById(R.id.textLine);
holder.buttonLine =(Button)
convertView.findViewById(R.id.buttonLine);
holder.textLine.setText(this.data.get(position));
convertView.setOnClickListener(new OnClickListener() {
private int pos= position;
public void onClick(View v) {
Toast.makeText(context, "Click-" +
String.valueOf(pos),
Toast.LENGTH_SHORT).show();
}
});
holder.buttonLine.setOnClickListener(new
OnClickListener() {
private int pos= position;
public void onClick(View v) {
ViewHolder deleteHolder =
(ViewHolder)v.getTag();
int delPosition=deleteHolder.position;
holders.remove(delPosition);
ViewHolder currentHolder;
for(int i=pos+1;i<getCount();i++){
currentHolder =
holders.get(delPosition);
currentHolder.position=i-1;
}
data.remove(delPosition);
notifyDataSetChanged();
Toast.makeText(context, "Delete-" +
String.valueOf(pos),
Toast.LENGTH_SHORT).show();
}
});
holder.position=position;
holders.put(Integer.toString(position), holder);
convertView.setTag(holder);
} else {
holder =(ViewHolder) convertView.getTag();
}
return convertView;
}
advance Thanx,
Krishna
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en