簡體   English   中英

如何在Android上從Listview刪除項目

[英]How to Delete Item From Listview on 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

adapter.notifyDataSetChanged()

我假設您想在按下按鈕時刪除列表中的項目-在調用按鈕按下的函數中,獲取項目位置並按以下方式刪除項目:

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;
}});

編輯:我犯了一個可怕的錯誤,並使用id代替了位置-顯然,您必須在function參數中使用position變量,因為它給出了位於項目列表中的整數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM