android studio listview长按删除

activity_main.xml 的代码

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView5"
        android:layout_width="45dp"
        android:layout_height="17dp"
        android:layout_marginLeft="4dp"
        android:layout_marginStart="4dp"
        android:layout_marginTop="16dp"
        android:text="班级:"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView6"
        android:layout_width="47dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="4dp"
        android:layout_marginStart="4dp"
        android:layout_marginTop="29dp"
        android:text="学号:"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView5" />

    <EditText
        android:id="@+id/editText3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="12dp"
        android:layout_marginStart="12dp"
        android:ems="10"
        android:inputType="textPersonName"
        app:layout_constraintStart_toEndOf="@+id/textView5"
        tools:layout_editor_absoluteY="0dp" />

    <EditText
        android:id="@+id/editText4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="12dp"
        android:layout_marginStart="12dp"
        android:ems="10"
        android:inputType="textPersonName"
        app:layout_constraintStart_toEndOf="@+id/textView6"
        app:layout_constraintTop_toBottomOf="@+id/editText3" />

    <TextView
        android:id="@+id/textView7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="4dp"
        android:layout_marginStart="4dp"
        android:layout_marginTop="28dp"
        android:text="姓名:"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView6" />

    <EditText
        android:id="@+id/editText5"
        android:layout_width="wrap_content"
        android:layout_height="45dp"
        android:layout_marginLeft="16dp"
        android:layout_marginStart="16dp"
        android:ems="10"
        android:inputType="textPersonName"
        app:layout_constraintStart_toEndOf="@+id/textView7"
        app:layout_constraintTop_toBottomOf="@+id/editText4" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="4dp"
        android:layout_marginStart="4dp"
        android:layout_marginTop="8dp"
        android:text="添加"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/editText5" />

    <ListView
        android:id="@+id/android:list"
        android:layout_width="wrap_content"
        android:layout_height="313dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button"
        app:layout_constraintVertical_bias="0.0" />
</android.support.constraint.ConstraintLayout>

item.xml 这是listview中的项

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/relativeLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/grade"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text= "班级"
            android:textSize="20sp"
            android:textColor="#0b0a0b"
            tools:layout_editor_absoluteX="46dp"
            android:paddingLeft="20dp"
            tools:layout_editor_absoluteY="0dp" />

        <TextView
            android:id="@+id/studentId"
            android:layout_width="wrap_content"
            android:layout_height="27dp"
            android:layout_weight="1"
            android:text="学号"
            android:textSize="20sp"
            android:textColor="#0b0a0b"
            tools:layout_editor_absoluteX="89dp"
            android:paddingLeft="20dp"
            tools:layout_editor_absoluteY="0dp" />

        <TextView
            android:id="@+id/name"
            android:layout_width="wrap_content"
            android:layout_height="27dp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"

            android:layout_weight="1"
            android:text="姓名"
            android:textColor="#0b0a0b"
            android:paddingLeft="20dp"
            android:textSize="20sp" />
    </LinearLayout>

</android.support.constraint.ConstraintLayout>

strings.xml一些字符串资源,后来嫌麻烦,直接硬编码了

<resources>
    <string name="app_name">deletetry1</string>
    <string name="grade">计算机151</string>
    <string name="score">成绩</string>
    <string name="banji">班级</string>
    <string name="stid">学号</string>
    <string name="name1">王菲</string>
    <string name="name2">张宇</string>
    <string name="name3">张学友</string>
    <string name="name4">刘德华</string>
</resources>

information类,这个类用来管理学生信息

package com.example.cie.deletetry1;

public class Information {
    private String mGrade;
    private int mStudentId;
    private String mName;

    public Information(String grade, int studentId, String mName) {
        mGrade = grade;
        mStudentId = studentId;
        this.mName = mName;
    }

    public String getGrade() {
        return mGrade;
    }

    public void setGrade(String grade) {
        mGrade = grade;
    }

    public int getStudentId() {
        return mStudentId;
    }

    public void setStudentId(int studentId) {
        mStudentId = studentId;
    }

    public String getName() {
        return mName;
    }

    public void setName(String mName) {
        this.mName = mName;
    }
}

mainActivity.java

package com.example.cie.deletetry1;

import android.app.ListActivity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.*;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MainActivity extends ListActivity {

    private Button mAddButton;
    private EditText grade, studentid, name;
    private Information[] mStudInfo = new Information[]{
            new Information("计算机151", 2014012543, "张宇"),
            new Information("计算机151", 2014012544, "刘德华"),
            new Information("计算机151", 2014012545, "张学友"),
    };
    private ListView listview;
    List<Map<String, Object>> mlistItems;
    Map<String, Object> mmap;
    //定义一个simpleAdapter,供列表项使用
    SimpleAdapter mSimpleAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        listview = (ListView) findViewById(android.R.id.list);
        //为所有的listview的item注册contextMenu
        this.registerForContextMenu(listview);

        mlistItems = new ArrayList<Map<String, Object>>();
        for (int i = 0; i < mStudInfo.length; i++) {
            mmap = new HashMap<String, Object>();
            mmap.put("grade", mStudInfo[i].getGrade());
            mmap.put("studentId", mStudInfo[i].getStudentId());
            mmap.put("name", mStudInfo[i].getName());
            mlistItems.add(mmap);
        }
        mSimpleAdapter = new SimpleAdapter(this, mlistItems, R.layout.item, new String[]{"grade", "studentId", "name"}, new int[]{R.id.grade, R.id.studentId, R.id.name});
        listview.setAdapter(mSimpleAdapter);

        //添加对象
        mAddButton = (Button) findViewById(R.id.button);
        grade = (EditText) findViewById(R.id.editText3);
        studentid = (EditText) findViewById(R.id.editText4);
        name = (EditText) findViewById(R.id.editText5);
        mAddButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mmap = new HashMap<String, Object>();
                mmap.put("grade", grade.getText());
                mmap.put("studentId", studentid.getText());
                mmap.put("name", name.getText());
                mlistItems.add(mmap);
                mSimpleAdapter.notifyDataSetChanged();
            }
        });
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        menu.setHeaderTitle("选择操作");
        menu.add(0, 1, Menu.NONE, "删除");
    }

    @Override
    public boolean onContextItemSelected(MenuItem item) {
        AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item.getMenuInfo();
        switch (item.getItemId()) {
            case 1:
                //删除
                int pos = (int) listview.getAdapter().getItemId(menuInfo.position);
                if (mlistItems.remove(pos) != null) {
                    System.out.println("success");
                } else {
                    System.out.println("failed");
                }
                mSimpleAdapter.notifyDataSetChanged();
                Toast.makeText(getBaseContext(), "删除此项", Toast.LENGTH_SHORT).show();
                break;
            default:
                //标记
                return super.onContextItemSelected(item);
        }
        return true;
    }

}

效果图如上,这个例子使用

onCreateContextMenu为每个listview的项创建了一个菜单,然后使用
onContextItemSelected来响应当菜单被选中时的操作

原文地址:https://www.cnblogs.com/1915884031A-qqcom/p/9218919.html

时间: 2024-10-10 19:53:31

android studio listview长按删除的相关文章

android studio &nbsp; Listview简单实例

//layout 布局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_

android 继承ListView实现滑动删除功能.

在一些用户体验较好的应用上,可以经常遇见   在ListView中  向左或向右滑动便可删除那一项列表. 具体实现  则是继承ListView实现特定功能即可. (1). 新建 delete_button.xml文件 <?xml version="1.0" encoding="utf-8"?> <Button xmlns:android="http://schemas.android.com/apk/res/android" a

Android Studio 1.2.2删除工程和令某一个工程作为lib的方法

1.首先是删除工程的方法,简直简单到没朋友!无意中发现的! 首选,在选择project的页面上,把鼠标移动到project上,不要点击!直接按键盘上的delete!完工......... 2.最近,导师偷偷外包了一个项目,项目里有扫二维码的需求,第一次接触,所以就去百度啦....然后发现一个叫ZXing的project,从 GitHub上下载下来之后测试能用,于是想集成到我的项目里,网上百度了不少方法,我估计他们的方法也是对的,但是由于AS版本比较 低,所以方法不适用在我这边,于是根据他们给出的

Android Studio怎样删除module

当你想在Android Studio中删除某个module时,大家习惯性的做法都是选中要删除的module.右键去找delete.可是 在Android Studio中你选中module,右键会发现没有delete,如图: 为什么会没有deletebutton.不科学啊,难道是Android Studio的bug或者设计组考虑不周.事实上这边没有deletebutton主要原因是由于Android Studio对module做了一个保护机制,就是一个module你是不能任意删除的,要删除你必须得

android studio 中移除module和恢复module

一.移除Android Studio中module 在Android Studio中想要删除某个module时,在Android Studio中选中module,右键发现没有delete,如图: Android Studio对module做了一个保护机制,module是不能随意删除的,要删除必须先从module列表中移除. 移除方式有两种: 1.File菜单下Project structure...,选中你要移除的module,然后按红色的'-'按钮,这个时候仅仅是在Android Studio

Android studio 编译失败Error:Could not read entry &amp;#39;:app:processDebugManifest&amp;#39; from cache taskArtifacts.b

Android studio 编译失败 Error:Could not read entry ':app:processDebugManifest' from cache taskArtifacts.bin 升级了Android studio 2.0 版本号后 编译之前的项目失败 出现了以下提示: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/

本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/18311877)Android 使用NineOldAndroids实现绚丽的ListView左右滑动删除Item效果

今天还是给大家带来自定义控件的编写,自定义一个ListView的左右滑动删除Item的效果,这个效果之前已经实现过了,有兴趣的可以看下Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果,之前使用的是滑动类Scroller来实现的,但是看了下通知栏的左右滑动删除效果,确实很棒,当我们滑动Item超过一半的时候,item的透明度就变成了0,我们就知道抬起手指的时候item就被删除了,当item的透明度不为0的时候,我们抬起手指Item会回到起始位置,这样我们就知道

Android 使用NineOldAndroids实现绚丽的ListView左右滑动删除Item效果

今天还是给大家带来自定义控件的编写,自定义一个ListView的左右滑动删除Item的效果,这个效果之前已经实现过了,有兴趣的可以看下Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果, 之前使用的是滑动类Scroller来实现的,但是看了下通知栏的左右滑动删除效果,确实很棒,当我们滑动Item超过一半的时候,item的透明度就变 成了0,我们就知道抬起手指的时候item就被删除了,当item的透明度不为0的时候,我们抬起手指Item会回到起始位置,这样我们就

android 自定义控件二之仿QQ长按删除

自定义Dialog 1.先上个效果图: 虽然效果丑了点,但主要学习修改已有的控件,例如修改Dialog控件 2.一些基本的只是进行了解 Dialog: theme是Dialog的样式,常用样式为: <style name="MyDialogStyle" parent="@android:Theme.Dialog"> <item name="android:windowFrame">@null</item> &l