繁体   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