简体   繁体   English

如何在Android上从Listview删除项目

[英]How to Delete Item From Listview on Android

I want to delete item when I long clicked. 我要长按一下才能删除项目。 First ı want to get position and then ı want to remove any item. 首先ı想获得位置,然后ı要删除任何物品。 My MainActivity 我的主要活动

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

My Adapter: 我的适配器:

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

My GetterSetter: 我的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;
    }
}

Please help me how can I remove the selected item from the following listview: 请帮助我如何从以下列表视图中删除所选项目:

从适配器中删除元素,并使用以下命令通知listView

adapter.notifyDataSetChanged()

I assume you want to remove an item on the list when it gets button press - In the function where the button press gets called, get item position and remove the item like so: 我假设您想在按下按钮时删除列表中的项目-在调用按钮按下的函数中,获取项目位置并按以下方式删除项目:

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)

and then call 然后打电话

adapter.notifyDataSetChanged()

That will solve your problem. 这将解决您的问题。

Full code: 完整代码:

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: I made a terrible mistake and used id instead of position - obviously you'll have to use the position variable in the functions parameters as it gives an integer where the item is located in your listview. 编辑:我犯了一个可怕的错误,并使用id代替了位置-显然,您必须在function参数中使用position变量,因为它给出了位于项目列表中的整数。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM