【问题标题】:I want to delete items on ListView when longpressed我想在长按时删除 ListView 上的项目
【发布时间】:2016-09-07 21:45:06
【问题描述】:

我想在长按时删除 listView 上的项目。在此代码中,您可以使用 Button 添加(使用edittext)列表项,如下所示。

我无法编写长按删除它们的代码。我该怎么办?

理想情况下,长按会弹出一个菜单,用户可以触摸和删除他们想要的部分。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    editText = (EditText) findViewById(R.id.editText);
    addButton = (Button) findViewById(R.id.addButton);
    listView = (ListView) findViewById(R.id.listView);
    listItems = new ArrayList<String>();
    listItems.add("First Item - added on Activity Create");
    adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, listItems);
    listView.setAdapter(adapter);
    addButton.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            listItems.add(editText.getText().toString());
            adapter.notifyDataSetChanged();
        }
    });
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> a, View v, int position,
                                long id) {
            Toast.makeText(MainActivity.this, "Clicked", Toast.LENGTH_LONG)
                    .show();
        }
    });
}

【问题讨论】:

    标签: java android listview long-press


    【解决方案1】:

    试试这个:

    listView.setOnItemLongClickListener(new OnItemLongClickListener() {
    
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view,
                int position, long arg3) {
    
                  adapter.remove(data[position]);//position of the item you click
                  adapter.notifyDataSetChanged();
    
            return false;
        }
    
    });
    

    【讨论】:

      【解决方案2】:

      你可以用动画来做到这一点:

      listView.setOnItemLongClickListener(new OnItemLongClickListener() {
      
          @Override
          public boolean onItemLongClick(AdapterView<?> parent, View view,
                  int position, long arg3) {
      
                    adapter.remove(data[position]);//position of the item you click
                    adapter.notifyItemRemoved(position);
      
              return false;
          }
      
      });
      

      【讨论】:

        【解决方案3】:

        在长按时删除列表视图项目,当您从列表视图中删除任何项目时,它应该显示警报对话框

        listview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
                @Override
                public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
        
                    removeItemFromList(position);
                    return true;
                }
        
                private void removeItemFromList(int position) {
        
                    final int deletePosition = position;
        
                    AlertDialog.Builder alert = new AlertDialog.Builder(
                            this);
        
                    alert.setTitle("Delete");
                    alert.setMessage("Do you want delete this item?");
                    alert.setPositiveButton("YES", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            // TOD O Auto-generated method stub
        
                            // main code on after clicking yes
                            songsList.remove(deletePosition);
                            songAdapter.notifyDataSetChanged();
                            songAdapter.notifyDataSetInvalidated();
        
                        }
                    });
                    alert.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            // TODO Auto-generated method stub
                            dialog.dismiss();
                        }
                    });
        
                    alert.show();
                }
        

        【讨论】:

          猜你喜欢
          • 2023-03-18
          • 1970-01-01
          • 2013-10-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-10
          • 1970-01-01
          相关资源
          最近更新 更多