2016-02-22 2 views
0

Я хочу удалить элемент, когда я долго нажимал. Сначала ı хочу получить позицию, а затем ı хотите удалить любой предмет. Мой MainActivityКак удалить элемент из списка на Android

public class MainActivity extends AppCompatActivity { 

    final List<Kisi> kisiler = new ArrayList<Kisi>(); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     kisiler.add(new Kisi("Ahmet Yılmaz", false, 0)); 
     kisiler.add(new Kisi("Ayşe Küçük", true, 1)); 
     kisiler.add(new Kisi("Fatma Bulgurcu", true, 2)); 
     kisiler.add(new Kisi("İzzet Altınmeşe", false, 3)); 
     kisiler.add(new Kisi("Melek Subaşı", true, 4)); 
     kisiler.add(new Kisi("Selim Serdilli", false, 5)); 
     kisiler.add(new Kisi("Halil İbrahim", false, 6)); 

     final ListView listemiz = (ListView) findViewById(R.id.liste); 
     final ozelAdapter adaptorumuz = new ozelAdapter(this, kisiler); 
     listemiz.setAdapter(adaptorumuz); 
    } 
} 

Мой адаптер:

package com.endroidteam.customlistview; 


public class ozelAdapter extends BaseAdapter { 

    private LayoutInflater mInflater; 
    private List<Kisi> mKisiListesi; 

    public ozelAdapter(Activity activity, List<Kisi> kisiler) { 
     mInflater = (LayoutInflater) activity.getSystemService(
       Context.LAYOUT_INFLATER_SERVICE); 
     mKisiListesi = kisiler; 
    } 

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

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

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

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

     satirView = mInflater.inflate(R.layout.satir, null); 
     TextView textView = 
       (TextView) satirView.findViewById(R.id.isimsoyisim); 
     ImageView imageView = 
       (ImageView) satirView.findViewById(R.id.simge); 

     Kisi kisi = mKisiListesi.get(position); 
     textView.setText(kisi.getIsim()); 

     if (kisi.isKadinMi()) { 
      imageView.setImageResource(R.drawable.android_icon_big_13); 
     } 
     else { 
      imageView.setImageResource(R.drawable.android_icon_big_4); 
     } 
     return satirView; 
    } 
} 

Мой GetterSetter:

private String isim; 
    private boolean kadinMi; 
    private int konum; 


    public Kisi(String isim, boolean kadinMi, int konum) { 
     super(); 
     this.isim = isim; 
     this.kadinMi = kadinMi; 
     this.konum = konum; 
    } 

    @Override 
    public String toString() { 
     return isim; 
    } 

    public String getIsim() { 
     return isim; 
    } 

    public void setIsim(String isim) { 
    this.isim = isim; 
    } 

    public int getKonum() { 
     return konum; 
    } 

    public void setKonum(int konum) { 
     this.konum = konum; 
    } 

    public boolean isKadinMi() { 
     return kadinMi; 
    } 

    public void setKadinMi(boolean kadinMi) { 
     this.kadinMi = kadinMi; 
    } 
} 

Пожалуйста, помогите мне, как я могу удалить выбранный элемент из следующего ListView:

ответ

0

Я предполагаю, что вы хотите, чтобы удалить элемент из списка, когда он получает нажатие кнопки - В функции, где нажатие кнопки вызывается, получить позицию элемента и удаление элемента следующим образом:

this.getListView().setLongClickable(true); 
this.getListView().setOnItemLongClickListener(new OnItemLongClickListener() { 
public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) { 
    //Do some 
    return true; 
} 

});

kissiler.remove(position) 

, а затем вызвать

adapter.notifyDataSetChanged() 

Это позволит решить вашу проблему.

Полный код:

this.getListView().setLongClickable(true); 
this.getListView().setOnItemLongClickListener(new OnItemLongClickListener() { 
public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) { 
    //Do some 
    kissiler.remove(position); 
    adapter.notifyDataSetChanged(); 
    return true; 
}}); 

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

+0

Спасибо, но я точно не знаю, как можно получить элемент id –

+0

@EmreTekin Когда вызванная функция, описанная выше, вызывается, она отправляет идентификатор элемента listview, который нажал на идентификатор переменной в параметрах функции. –

+0

@EmreTekin Я допустил ошибку в своем коде и исправил ее. Попробуй это сейчас. –

0

удалить элементы вашего адаптера и уведомить listView с помощью

adapter.notifyDataSetChanged() 
Смежные вопросы