2017-01-05 3 views
0

У меня есть 2 массива productname и цена. моя каждая строка в списке содержит имя продукта, цену и кнопку изображения. когда я нажимаю кнопку удаления, выбранное имя продукта и цена должны быть удалены из моего массива, а также из моего списка. Пожалуйста, помогите мне сделать это, очень важно для меня. Если есть другой способ сделать это, PLZ дайте мне знать. Только студент!удалить элементы из списка в android

это мой CartActivity

public class CartActivity extends Activity implements View.OnClickListener { 


CartAdapter contactAdapter; 
ListView listView; 
public String productname[]=new String[10]; 
public String price[]=new String[10]; 

int i=0,m; 
CartActivity(String scanContent){ 
    this.content = scanContent; 
} 
public CartActivity() {} 
String product,Price; 
String pri,prod; 
Intent intent; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_cart);  
    listView = (ListView) findViewById(R.id.cart_list_view); 

    contactAdapter = new CartAdapter(this,R.layout.activity_cart_list_view); 
    listView.setAdapter(contactAdapter); 

    intent = getIntent(); 
    productname = intent.getStringArrayExtra("productname"); 
    price = intent.getStringArrayExtra("price"); 

    for(int j=0;j<price.length;j++) { 
     product = productname[j]; 
     Price = price[j]; 
     if (Price != null || product != null) { 
      Cart contacts = new Cart(product, Price); 
      contactAdapter.add(contacts); 
     } 
    } 
} 

это мой CartAdapter

public class CartAdapter extends ArrayAdapter { 
List list = new ArrayList(); 
int ind,x=0; 
public CartAdapter(CartActivity context, int resource) { 
    super(context, resource); 
} 
public void add(Cart object) { 
    super.add(object); 
    list.add(object); 
} 

@Override 
public int getCount() { 
    return list.size(); 
} 

@Override 
public Object getItem(int position) { 
    return list.get(position); 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View row; 
    row = convertView; 

    ContactHolder contactHolder; 
    if(row == null) 
    { 
     LayoutInflater layoutInflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     row = layoutInflater.inflate(R.layout.activity_cart_list_view,parent,false); 
     contactHolder = new ContactHolder(); 
     contactHolder.tx_name =(TextView) row.findViewById(R.id.product_name); 
     contactHolder.tx_price =(TextView) row.findViewById(R.id.price); 

     contactHolder.cancelButton = (ImageButton) row.findViewById(R.id.cancel_button); 


     row.setTag(contactHolder); 
    } 

    else 
    { 
     contactHolder = (ContactHolder)row.getTag(); 
    } 

    cancelButton.setTag(position); 
     cancelButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       Integer index = (Integer) view.getTag(); 
       list.remove(index.intValue()); 
      notifyDataSetChanged(); 

      } 
     }); 


    Cart contacts = (Cart) this.getItem(position); 
    contactHolder.tx_name.setText(contacts.getItemname()); 
    contactHolder.tx_price.setText(contacts.getPrice()); 
    return row; 
} 

static class ContactHolder 
{ 
    TextView tx_name,tx_price; 
    ImageButton cancelButton; 
} 
} 

это моя корзина

public class Cart { 
private String itemname,price; 
public Cart(String itemname,String price) { 
    this.setItemname(itemname); 
    this.setPrice(price); 
} 
public void setItemname(String itemname) { 
    this.itemname = itemname; 
} 
public void setPrice(String price) { 
    this.price = price; 
} 
public String getItemname() { 
    return itemname; 
} 
public String getPrice() { 
    return price; 
} 
} 

my each row in a listview contains this

ответ

2

Просто сделай это,

в классе адаптера,

cancelButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      list.remove(position); //position is getView position 
      // above line will remove from arraylist 
      notifyDataSetChanged(); //this line reflects change in listview 

     } 
    }); 

Чтобы удалить из класса активность, лучше создать ArrayList первым.

ArrayList<Cart> cardList = new ArrayList<Cart>(); 

добавить в ArrayList,

if (Price != null || product != null) { 
     Cart contacts = new Cart(product, Price); 
     cardList.add(contacts); 
     contactAdapter.add(contacts); // this line should be removed if you work with arrayList 
    } 

теперь создайте метод для удаления из ActivityCard ArrayList,

//call this method from cancelimage click in adapter class 
public void removeFromList(int position){ 
    cardList.remove(position); //this will remove from activity arraylist 
} 

В конце рассчитать свой счет из имеющихся данных cartList.

*** Вы также можете создать объект класса адаптера с помощью CardList, просто изменив свой конструктор. Если вы сделаете это, то просто позвоните removeFromList на cancelimage мыши и положить,

adapter.notifyDataSetChanged(); 

после

cardList.remove (положение);

он также обновит ваш список.

+0

Сэр фактически был ошибкой в ​​предыдущем коде. проверьте его сейчас. Да элемент удаляется из списка, но я хочу, чтобы этот элемент был удален из моего массива, который я получаю с помощью намерения. Потому что я хочу, чтобы этот массив сгенерировал счет –

+0

, можете ли вы снова рассмотреть вопрос, я думаю, его снова изменили! – Exigente05

+0

Извините за несладкость сэр. Например, у обоих моих массивов есть 5 элементов. поэтому в списке будет отображаться 5 элементов. Если мы нажмем кнопку «Удалить» в индексе 3, то он удаляется из моего списка/arraylist. Но я хочу, чтобы этот элемент index3 был удален из моего массива productname nd.Пожалуйста, помогите! –

Смежные вопросы