-2

In listview, i am looking to create an action(eg. COPY) that will duplicate a selected view (with a new ID) in a list of objects. The view must be created next to the selected view. Any idea?

Here is my adapter

public class Test extends BaseAdapter {

Context context;
ArrayList<ListItemVO> itemList;
List<String> editList;

static class ViewHolder {
    public TextView text;
    public EditText editText;
    public ViewSwitcher vs;
}

public Test(Context context, ArrayList<ListItemVO> arr) {
    this.context = context;
    this.itemList = arr;
}

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return itemList.size();
}

@Override
public Object getItem(int position) {
    // TODO Auto-generated method stub
    return itemList.get(position);
}

@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub
    return position;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {

    View rowView = convertView;

    ViewHolder holder;
    if (convertView == null) {

        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        rowView = inflater.inflate(R.layout.listview_item, parent, false);

        holder = new ViewHolder();

        holder.text = (TextView) rowView.findViewById(R.id.textView111);

        holder.editText = (EditText) rowView.findViewById(R.id.editText111);
        holder.vs = (ViewSwitcher) rowView.findViewById(R.id.viewSwitcher111);

        rowView.setTag(holder);

    } else {
        holder = (ViewHolder) rowView.getTag();
    }

    holder.text.setText(itemList.get(position).getName());
    holder.editText.setText(itemList.get(position).getName());

    holder.editText.setTag(R.id.TAG_POSITION_ID, position);
    holder.editText.setOnFocusChangeListener(new OnFocusChangeListener() {

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (!hasFocus) {
                final int position = Integer.parseInt(v.getTag(R.id.TAG_POSITION_ID).toString());
                final EditText editText = (EditText) v;
                String val = editText.getText().toString(); // you have the value here

                if (val.compareTo("") != 0) {
                    itemList.get(position).setName(val);
                }
            }
        }
    });

    holder.vs.setDisplayedChild(0);
    if(itemList.get(position).isEdit()) {
        holder.vs.setDisplayedChild(1);
    }

    return rowView;
}

}

User0802
  • 49
  • 1
  • 10

1 Answers1

0

implement adapters onItemClick() for the adapter and update your list of items

For delete, remove that item from list. For add, add an item at that position. For edit, edit list.

in the end call adapter.notifyDataSetChanged()

BlackBeard
  • 145
  • 6