欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android实现下拉展示条目效果

程序员文章站 2022-06-23 14:58:32
本文实例为大家分享了android下拉展示条目的具体代码,供大家参考,具体内容如下 布局文件

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

布局文件

<?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:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingbottom="@dimen/activity_vertical_margin"
android:paddingleft="@dimen/activity_horizontal_margin"
android:paddingright="@dimen/activity_horizontal_margin"
android:paddingtop="@dimen/activity_vertical_margin"
android:background="#000000"
tools:context="com.example.a2_.mainactivity">

<edittext
  android:id="@+id/et_input"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:textcolor="#fff"
  android:text="请输入内容" />

<imagebutton
  android:padding="6dp"
  android:background="@null"
  android:layout_alignright="@id/et_input"
  android:id="@+id/ib"
  android:src="@mipmap/down_arrow"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content" />
</relativelayout>

条目布局文件

<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp"
android:descendantfocusability="blocksdescendants"
android:orientation="horizontal">

<imageview

  android:src="@mipmap/user"
  android:id="@+id/iv_user"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content" />

<textview
  android:layout_weight="1"
  android:id="@+id/tv_data"
  android:text="100"
  android:textcolor="#000000"
  android:gravity="center_horizontal"
  android:layout_width="0dp"
  android:layout_height="wrap_content" />

<imagebutton
  android:background="@null"
  android:src="@mipmap/delete"
  android:id="@+id/iv_delete"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content" />

</linearlayout>

核心代码

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<string> 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<?> 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;
  }
}

}

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