3次点击后删除ListView项目

时间:2017-07-13 11:32:15

标签: java android listview arraylist android-menu

如何从Android上的ListView中删除ListView项目?
但是,我希望在删除之前将每个项目的点击设置为3 因此,如果第一个位置的项目被点击一次而第二个项目被点击两次,则在第一个项目点击达到3之前不要删除任何项目。然后仅删除该项目,而对于ListView中的其他项目,每个项目都必须单击3次。

listi.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view,final int position, long id) {
        final PopupMenu pop = new PopupMenu(Danger.this, listi);
        pop.getMenuInflater().inflate(R.menu.menu_location, pop.getMenu());
        pop.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                switch (item.getItemId()) {

                    case R.id.Remove:


                        items.remove(position);

                }//swithc
                return false;

4 个答案:

答案 0 :(得分:2)

创建一个整数的ArrayList,并使用列表视图的相同元素计数进行初始化,并设置list = 0的所有元素的值

ArrayList<integers> counterList = new Arraylist();
for(int i = 0; i < listi.getAdapter.getChildrenCount(); i++){ // get total elements in adapter
    counterList.add(0); // set each element of array list to 0
}

然后在这里:

listi.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,final int position, long id) {
    final PopupMenu pop = new PopupMenu(Danger.this, listi);
    pop.getMenuInflater().inflate(R.menu.menu_location, pop.getMenu());
    pop.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            switch (item.getItemId()) {

                case R.id.Remove:
                   if(counterList.get(position) >= 2){

                       items.remove(position); // remove current position item from arraylist adapter and notify data set changed
                       counterList.remove(position); // remove the current position element from counter list too
                   } else {
                        counterList.set(position, counterList.get(position) + 1); // if 3 clicks have not happened then increase the counter.
                   }

            }//swithc
            return false;

答案 1 :(得分:0)

使用静态变量并将其保留为null,在ClickListener中包含静态变量,一旦变量达到3,就可以从列表视图中删除项目

答案 2 :(得分:0)

创建一个bean(Model)类,用于记录被点击的项目 他们的相应位置和每次点击项目首先检查 单击此项目的时间,如果它返回2,则删除该项目 否则没有。

答案 3 :(得分:0)

我建议添加2个字段:int timesClickedint lastItemId,然后在您的onMenuItemClick方法中,检查是否需要删除该项:

int timesClicked = 0;
int lastItemId;
...
@Override
public boolean onMenuItemClick(MenuItem item) {
    if(item.getItemId() == lastItemId) {
        if(timesClicked == 3) {
            timesCliked == 0;
            items.remove(item);
        } else timesClicked++;
    } else {
        lastItemId = item.getItemId();
        timesClicked = 0;
    }
}

这应该有用。