3

I am displayed itemimage,itemname,rate,qty,price and delete button in row custom listview .. if i click the delete button means i want remove whole row in listview.

I try this code

    public class CustomAdapter extends BaseAdapter {

public static Double x = 0.0;
public static Double z;
ArrayList<Integer> selectprice = new ArrayList<Integer>();
public static ArrayList<String> arr1 = new ArrayList<String>();
public static ArrayList<String> itemprice = new ArrayList<String>();
public static ArrayList<Bitmap> itemimage = new ArrayList<Bitmap>();
ArrayList<Integer> total = new ArrayList<Integer>();
public Context Context;
private LayoutInflater inflater;

HashMap<String, String> map = new HashMap<String, String>();

public CustomAdapter(Context context, ArrayList<String> arr,
        ArrayList<String> price, ArrayList<Bitmap> image) {
    Context = context;
    inflater = LayoutInflater.from(context);
    arr1 = arr;
    itemprice = price;

    itemimage = image;
    System.out.println(itemprice);
    System.out.println("arr: " + arr.size());

    for (int i = 0; i < price.size(); i++) {

        x = x + Double.parseDouble(price.get(i));

    }

}

public int getCount() {
    // TODO Auto-generated method stub
    return arr1.size();

}

// public void remove(ViewHolder v) {
// arr1.remove(arr1);
// notifyDataSetChanged();
// }

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

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

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

    final ViewHolder holder;

    if (convertView == null) {
        convertView = inflater.inflate(R.layout.selecteditemlistview, null);

        holder = new ViewHolder();

        holder.textViewSelectedText = (TextView) convertView
                .findViewById(R.id.selectedtext);
        holder.price = (TextView) convertView
                .findViewById(R.id.selectitemprice);
        holder.image = (ImageView) convertView
                .findViewById(R.id.selectitemimage);
        holder.qty = (EditText) convertView.findViewById(R.id.selectqty);
        holder.total = (TextView) convertView.findViewById(R.id.price);
        holder.delete = (Button) convertView.findViewById(R.id.delete);

        convertView.setTag(holder);

    } else {
        holder = (ViewHolder) convertView.getTag();
    }
    final Double price1 = Double.parseDouble(itemprice.get(position));
    int qut = Integer.parseInt(holder.qty.getText().toString());
    final Double total = (price1 * qut);
    System.out.println(total);
    holder.textViewSelectedText.setText(arr1.get(position));
    holder.price.setText(itemprice.get(position));
    holder.image.setImageBitmap(itemimage.get(position));
    holder.total.setText(String.valueOf(total));

    holder.delete.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            arr1.remove(position);//here only i tried to remove the row in custom listview
            itemprice.remove(position);
            itemimage.remove(position);

        }
    });
    holder.qty.setOnFocusChangeListener(new OnFocusChangeListener() {

        public void onFocusChange(View v, boolean hasFocus) {
            // TODO Auto-generated method stub
            if (!hasFocus) {
                final EditText Caption = (EditText) v;
                Caption.setFocusable(true);
                holder.qty.setFocusable(true);
                Double q = Double.parseDouble(holder.qty.getText()
                        .toString());
                double result = (price1 * q);

            }

        }
    });

    return convertView;
}

class ViewHolder {

    Button delete = null;
    TextView textViewSelectedText = null;
    TextView price = null;
    ImageView image = null;
    EditText qty = null;
    TextView total = null;
}

}

this my selecteditemlistview.xml

        <?xml version="1.0" encoding="utf-8"?>
       <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
       <ImageView
  android:id="@+id/selectitemimage" 
  android:layout_width="75dip"
  android:layout_height="79dip" android:src="@drawable/stub"        
      android:scaleType="centerCrop"/>

   <TextView
  android:id="@+id/selectedtext" 
  android:textColor="#000000"
  android:layout_width="150dp"
  android:layout_height="wrap_content"
  android:layout_marginLeft="80dip"
  android:layout_weight="1"
  android:textSize="15sp" />

  <TextView
  android:id="@+id/selectitemprice"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
 android:textColor="#000000"
  android:textAppearance="?android:attr/textAppearanceMedium" 
  android:layout_marginLeft="250dp"/>

  <EditText
  android:id="@+id/selectqty"
   android:maxLength="3" 
  android:layout_width="40dp"
   android:text="1"
  android:layout_height="40dp" 
  android:singleLine="true"
  android:layout_alignParentTop="true" 
  android:layout_marginLeft="36dp"
  android:layout_toRightOf="@+id/selectitemprice"
   >

  <requestFocus />      
  </EditText>

 <TextView
  android:id="@+id/price" 
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_marginLeft="400dp"
  android:layout_toRightOf="@+id/editText1" 
 android:inputType="none"
 android:textColor="#000000"
  android:editable="false"
  android:textAppearance="?android:attr/textAppearanceMedium" />

 <Button
   android:id="@+id/delete"
   android:layout_width="100dp"
   android:layout_height="50dp"
   android:text="delete"

   android:layout_marginLeft="630dp"


   />

</RelativeLayout>       

I taken all arrays of itemimage itemname price and then displayed into a custom listview. if i press delete button means it delete that particular row in listview. please help me

0

3 Answers 3

6

Try this,

holder.delete.setOnClickListener(new OnClickListener() 
{
    @Override
    public void onClick(View v) 
    {
        arr1.remove(position);//here only i tried to remove the row in custom listview
        itemprice.remove(position);
        itemimage.remove(position);
        notifyDataSetChanged();
    }
});

Calling "notifyDataSetChanged" means that the data associated with the view has been changed and hence the view has to refresh itself to keep it updated with the data.

Sign up to request clarification or add additional context in comments.

Comments

1

you need to invoke

Adapter.notifyDataSetChanged() 

after you have made changes in datasources, which are in your ArrayLists.

Comments

0

adapter.remove(itemimage); . . . adapter.notifyDataSetChanged() ;

where "adapter" is the adapter name where u store the data into the listview like (listview.setadapter(adapter)) and what is "itemimage" that u know...

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.