android studio实验: UI设计 ListView及事件响应

 更新时间:2022年01月25日 09:29:54   作者:wow_awsl_qwq  
这篇文章主要介绍了android studio实验: UI设计 ListView及事件响应,主要是ListView及其事件响应方法 弹出菜单PopupMenu及其事件响应方法,下面来看看具文章体的介绍吧

实验目的:

  • 1.学习使用ListView及其事件响应方法。
  • 2.阅读sdk/doc/index脱机文档或者在Android developer开发者网站上,学习使用弹出菜单PopupMenu及其事件响应方法。

实验要求:

  • 1.实现一个列表,其中显示班级学号姓名,提供添加功能
  • 2.对添加的选项,通过长按某项,调用弹出菜单显示删除功能,并删除该选项。

package com.example.shiyan3;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.PopupMenu;

import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;




public class MainActivity extends AppCompatActivity {


    List<String> list;

    ArrayAdapter<String> adapter;

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

        EditText t1=(EditText) findViewById(R.id.edit_1);
        EditText t2=(EditText) findViewById(R.id.edit_2);
        EditText t3=(EditText) findViewById(R.id.edit_3);
        ListView listView = (ListView)findViewById(R.id.listview);
        Button bt= (Button) findViewById(R.id.button);

        list = new ArrayList<String>();
        list.add("班级                     姓名                        学号");

        adapter=new ArrayAdapter<String>(this,R.layout.support_simple_spinner_dropdown_item,list);
        listView.setAdapter(adapter);

        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                list.add(t1.getText().toString()+"              "+t2.getText().toString()+"              "+t3.getText().toString());
                adapter.notifyDataSetChanged();
            }
        });

        AdapterView.OnItemLongClickListener lclistener=new AdapterView.OnItemLongClickListener()
        {
            @Override
            public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
                popupshow(view,i);
                adapter.notifyDataSetChanged();
                return false;
            }
        };
        listView.setOnItemLongClickListener(lclistener);

    }


    public  void popupshow(View v,int i){//自定义函数
        PopupMenu popup=new PopupMenu(this,v);
        popup.setGravity(Gravity.CENTER_HORIZONTAL);
        MenuInflater inflater=popup.getMenuInflater();
        inflater.inflate(R.menu.popupmenu,popup.getMenu());

        popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                if(item.getItemId()==R.id.delete)
                {
                    list.remove(i);
                    adapter.notifyDataSetChanged();
                }
                return false;
            }
        });

        if(i!=0) popup.show();//防止把第一行给删了
    }

}
<?xml version="1.0" encoding="utf-8"?>
<TableLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >


    <TableRow
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <TextView
            android:id="@+id/textview1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:text="班级:"
            android:textSize="20sp" />
        <EditText
            android:id="@+id/edit_1"
            android:layout_height="wrap_content"
            android:layout_width="500px"

            />

    </TableRow>
    <TableRow
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <TextView
            android:id="@+id/textview2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="姓名:"
            android:textSize="20sp" />

        <EditText
            android:id="@+id/edit_2"
            android:layout_width="500px"
            android:layout_height="wrap_content"
            android:text="" />

    </TableRow>

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <TextView
            android:id="@+id/textview3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="学号:"
            android:textSize="20sp" />

        <EditText
            android:id="@+id/edit_3"
            android:layout_width="500px"
            android:layout_height="wrap_content"
            android:text="" />

    </TableRow>

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="350px"
        android:layout_marginRight="350px"
        android:text="添加" />

    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

    </ListView>

</TableLayout>

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/delete"
        android:title="删除"/>
   <item
        android:id="@+id/add"
    android:title="添加"/>

</menu>

到此这篇关于android studio实验: UI设计 ListView及事件响应的文章就介绍到这了,更多相关UI设计 ListView及事件响应内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Kotlin静态方法的使用浅析

    Kotlin静态方法的使用浅析

    静态方法在其他高级语言(如C++,Java)中也叫类方法。静态方法在调用时无需创建实例,通过类名.方法名的方式调用。在java中调用静态方法的只需在声明前面加关键字static即可。而kotlin中却比较复杂,下面我们来了解一下
    2022-08-08
  • 从源码分析Android的Glide库的图片加载流程及特点

    从源码分析Android的Glide库的图片加载流程及特点

    这篇文章主要介绍了从源码分析Android的Glide库的图片加载流程及特点,Glide库是Android下一款人气很高的多媒体资源管理库,特别是在处理gif加载方面受到众多开发者青睐,需要的朋友可以参考下
    2016-04-04
  • Android使用TabLayou+fragment+viewpager实现滑动切换页面效果

    Android使用TabLayou+fragment+viewpager实现滑动切换页面效果

    这篇文章主要介绍了Android使用TabLayou+fragment+viewpager实现滑动切换页面效果,需要的朋友可以参考下
    2017-05-05
  • 如何使用Flutter开发一款电影APP详解

    如何使用Flutter开发一款电影APP详解

    这篇文章主要给大家介绍了关于如何使用Flutter开发一款电影APP的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Flutter具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • Android 处理OnItemClickListener时关于焦点颜色的设置问题

    Android 处理OnItemClickListener时关于焦点颜色的设置问题

    这篇文章主要介绍了Android 处理OnItemClickListener时关于焦点颜色的设置问题的相关资料,需要的朋友可以参考下
    2017-02-02
  • Android中ScrollView 滑到头部或尾部可伸缩放大效果

    Android中ScrollView 滑到头部或尾部可伸缩放大效果

    最近做项目遇到这样的需求S当crollView 滑动到顶部,不能在滑动的时候,图片可以下拉放大,松开又恢复,滑到底部没有内容的时候,也有伸缩效果,下面通过实例代码给大家介绍Android ScrollView 滑到头部或尾部可伸缩放大功能,一起学习吧
    2017-03-03
  • Android手机抓包步骤

    Android手机抓包步骤

    这篇文章主要介绍了Android手机抓包步骤,在android网络开发中这个功能还是很有必要的,下面把抓包步骤分享给大家
    2013-11-11
  • AndroidStudio Gradle基于友盟的多渠道打包方法

    AndroidStudio Gradle基于友盟的多渠道打包方法

    这篇文章主要介绍了AndroidStudio Gradle基于友盟的多渠道打包方法,需要的朋友可以参考下
    2017-09-09
  • Android中Matrix用法实例分析

    Android中Matrix用法实例分析

    这篇文章主要介绍了Android中Matrix用法,以实例形式分析了Matrix矩阵运算的常用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • android 退出程序解决内存释放的问题

    android 退出程序解决内存释放的问题

    做Android项目的时候发现一个问题:当应用程序退出了,点击"设置"查看应用程序,界面显示着可以点击"强制关闭 由于这个问题我发现了一个更加严重的问题,那就是,在我应用程序退出之后,系统并没有释放掉我应用程序所占内存
    2012-11-11

最新评论