1

У меня есть пользовательский ArrayAdapter, в котором я использую два разных макета.Удалить элемент списка при щелчке внутри пользовательского адаптера

Элемент списка 1 имеет разную компоновку, а другой элемент списка имеет одинаковый макет.

Элемент списка имеет макет, который включает в себя кнопку и текстовое изображение. Я хочу, чтобы элемент списка удалялся, когда кто-то нажал кнопку внутри него.

class MyAdapter extends ArrayAdapter<Product> { 

@Override 
public int getViewTypeCount() { 
    return 2; 
} 

@Override 
public int getItemViewType(int position) { 
    if (position == 0) { 
     return VIEW_TYPE0; 
    } 
    return VIEW_TYPE1; 
} 

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

    final Product product = getItem(position); 

    if (convertView == null) { 
     if (getItemViewType(position) == VIEW_TYPE0) { 
      convertView = LayoutInflater.from(getContext()).inflate(R.layout.layout1, parent, false); 
     } else { 
      convertView = LayoutInflater.from(getContext()).inflate(R.layout.layout2, parent, false); 
     } 
    } 

    TextView textview1; 
    TextView textview2; 
    Button button1; 

    if (position == 0) { 
     button1 = (Button) convertView.findViewById(R.id.button1); 
     button1.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       // delete this first list item here 
      } 
     }); 
    } else { 
     textview = (TextView) convertView.findViewById(R.id.textview1); 
     textview.setText(product.product_name); 
    } 
    return convertView; 
} 
+0

, как вы передаете данные в 'MyAdapter'? –

+0

MyAdapter adapter = новый MyAdapter (это, placeProducts.products); listView.setAdapter (адаптер); – shubendrak

+0

'products' - это ArrayList или любая другая структура данных? –

ответ

0

Попробуйте также использовать метод удаления списка и вызовите notifyDataSetChanged:

public void onClick(View v) { 
     // delete this first list item here 
     products.remove(0); 
     notifyDataSetChanged(); 
    }