热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

Android实现下拉展示条目效果

这篇文章主要为大家详细介绍了Android实现下拉展示条目效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Android下拉展示条目的具体代码,供大家参考,具体内容如下

布局文件

<&#63;xml version="1.0" encoding="utf-8"&#63;>





条目布局文件

<&#63;xml version="1.0" encoding="utf-8"&#63;>








核心代码

package com.example.a2_;

import android.graphics.drawable.ColorDrawable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.TextView;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

private EditText et_input;
private PopupWindow popupWindow;
private ListView lv_list;
private ArrayList data;
private MyAdapter myAdapter;

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

  //初始化控件
  et_input = (EditText) findViewById(R.id.et_input);
  ImageButton ib = (ImageButton) findViewById(R.id.ib);

  //初始化数据源
  initData();
  //创建一个listView
  lv_list = new ListView(this);
  //给listview设置背景
  lv_list.setBackgroundResource(R.mipmap.listview_background);
  //给listview设置适配器
  myAdapter = new MyAdapter();
  lv_list.setAdapter(myAdapter);
  //给listview设置条目点击事件
  lv_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<&#63;> parent, View view, int position, long id) {
      //当点击到一个条目的时候,就把这个条目的内容显示在输入框中
      et_input.setText(data.get(position));
      popupWindow.dismiss();
    }
  });

  //给按钮设置点击事件
  ib.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
      //当点击下拉按钮时,显示列表选项
      showPopup();
    }
  });

}

//初始化数据
private void initData() {
  //创建一个集合,用来存储数据
  data = new ArrayList<>();
  //通过for循环创建数据
  for (int i = 1;i<20;i++){
    data.add(100+i+"");
  }
}

//显示下拉的列表条目
private void showPopup() {
  //创建PopupWindow对象
  popupWindow = new PopupWindow(lv_list,et_input.getWidth(),500,true);
  //为了在点击列表条目之外的区域能够让列表条目隐藏,为列表条目设置一个背景
  popupWindow.setBackgroundDrawable(new ColorDrawable());
  //让列表条目显示 并指定在哪个列表条目下展示
  popupWindow.showAsDropDown(et_input);
}

//创建一个适配器
class MyAdapter extends BaseAdapter{

  @Override
  public int getCount() {
    return data.size();
  }

  @Override
  public String getItem(int position) {
    return data.get(position);
  }

  @Override
  public long getItemId(int position) {
    return position;
  }

  @Override
  public View getView(final int position, View convertView, ViewGroup parent) {
    //判断convertView是否为空
    if (cOnvertView==null){
      cOnvertView= View.inflate(MainActivity.this,R.layout.lv_item,null);

    }
    //找到控件
    TextView tv_data = (TextView) convertView.findViewById(R.id.tv_data);
    ImageView iv_delete = (ImageView) convertView.findViewById(R.id.iv_delete);

    //设置点击事件
    iv_delete.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        //删除集合里面的数据
        data.remove(position);
        //刷新页面
        myAdapter.notifyDataSetChanged();
      }
    });
    //获取数据
    String data = getItem(position);
    //设置数据
    tv_data.setText(data);
    return convertView;
  }
}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • 本文探讨了在Android应用中实现动态滚动文本显示控件的优化方法。通过详细分析焦点管理机制,特别是通过设置返回值为`true`来确保焦点不会被其他控件抢占,从而提升滚动文本的流畅性和用户体验。具体实现中,对`MarqueeText.java`进行了代码层面的优化,增强了控件的稳定性和兼容性。 ... [详细]
  • 当前,众多初创企业对全栈工程师的需求日益增长,但市场中却存在大量所谓的“伪全栈工程师”,尤其是那些仅掌握了Node.js技能的前端开发人员。本文旨在深入探讨全栈工程师在现代技术生态中的真实角色与价值,澄清对这一角色的误解,并强调真正的全栈工程师应具备全面的技术栈和综合解决问题的能力。 ... [详细]
  • 深入解析Gradle中的Project核心组件
    在Gradle构建系统中,`Project` 是一个核心组件,扮演着至关重要的角色。通过使用 `./gradlew projects` 命令,可以清晰地列出当前项目结构中包含的所有子项目,这有助于开发者更好地理解和管理复杂的多模块项目。此外,`Project` 对象还提供了丰富的配置选项和生命周期管理功能,使得构建过程更加灵活高效。 ... [详细]
  • 为了优化直播应用底部聊天框的弹出机制,确保在不同设备上的布局稳定性和兼容性,特别是在配备虚拟按键的设备上,我们对用户交互流程进行了调整。首次打开应用时,需先点击首个输入框以准确获取键盘高度,避免直接点击第二个输入框导致的整体布局挤压问题。此优化通过调整 `activity_main.xml` 布局文件实现,确保了更好的用户体验和界面适配。 ... [详细]
  • 在Spring框架中,基于Schema的异常通知与环绕通知的实现方法具有重要的实践价值。首先,对于异常通知,需要创建一个实现ThrowsAdvice接口的通知类。尽管ThrowsAdvice接口本身不包含任何方法,但开发者需自定义方法来处理异常情况。此外,环绕通知则通过实现MethodInterceptor接口来实现,允许在方法调用前后执行特定逻辑,从而增强功能或进行必要的控制。这两种通知机制的结合使用,能够有效提升应用程序的健壮性和灵活性。 ... [详细]
  • SQLmap自动化注入工具命令详解(第28-29天 实战演练)
    SQL注入工具如SQLMap等在网络安全测试中广泛应用。SQLMap是一款开源的自动化SQL注入工具,支持12种不同的数据库,具体支持的数据库类型可在其插件目录中查看。作为当前最强大的注入工具之一,SQLMap在实际应用中具有极高的效率和准确性。 ... [详细]
  • 深入解析 Android Drawable:第六阶段进阶指南 ... [详细]
  • 在 Android 开发中,通过合理利用系统通知服务,可以显著提升应用的用户交互体验。针对 Android 8.0 及以上版本,开发者需首先创建并注册通知渠道。本文将详细介绍如何在应用中实现这一功能,包括初始化通知管理器、创建通知渠道以及发送通知的具体步骤,帮助开发者更好地理解和应用这些技术细节。 ... [详细]
  • 深入解析Spring Boot自动配置机制及其核心原理
    Spring Boot 的自动配置机制是其核心特性之一,旨在简化开发过程并提高效率。本文将深入探讨这一机制的工作原理,解释其如何通过智能化的类路径扫描和条件注解实现自动装配。通过对 Spring Boot 自动配置的详细解析,读者将能够更好地理解和应用这一强大功能,从而在实际项目中更加高效地利用 Spring Boot。 ... [详细]
  • 从 Java 过渡到 Ruby,不仅是一次编程语言的转换,更是一段技术进阶的旅程。本文将深入探讨两种语言在语法、生态系统和开发模式上的差异,帮助开发者顺利实现转型,并在新的环境中高效地编写高质量代码。 ... [详细]
  • 探讨Java中利用CXF与JAXRS实现Web服务请求及会话管理的常见问题与解决方案 ... [详细]
  • voc生成xml 代码
    目录 lxmlwindows安装 读取示例 可视化 生成示例 上面是代码,下面有调用示例 api调用代码,其实只有几行:这个生成代码也很简 ... [详细]
  • 如何利用Apache与Nginx高效实现动静态内容分离
    如何利用Apache与Nginx高效实现动静态内容分离 ... [详细]
  • 探索JavaScript倒计时功能的三种高效实现方法及代码示例 ... [详细]
  • Nmap端口检测与网络安全性评估
    Nmap 是一款强大的网络扫描工具,能够高效地进行主机发现、端口扫描和服务识别。它不仅能够检测网络中活跃的主机,还能详细列出这些主机上开放的端口及其对应的服务和版本信息。此外,Nmap 还具备操作系统指纹识别和硬件地址探测功能,为网络安全评估提供了全面的数据支持。 ... [详细]
author-avatar
沈巛小糖meimei昌策_247
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有