zoukankan      html  css  js  c++  java
  • 自定义布局实现下拉列表条目选择功能的实现

    package com.loaderman.dropbox;
    
    import android.app.Activity;
    import android.graphics.drawable.ColorDrawable;
    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.ImageView;
    import android.widget.ListView;
    import android.widget.PopupWindow;
    import android.widget.TextView;
    
    import java.util.ArrayList;
    
    public class MainActivity extends Activity {
    
        private ImageView ivDrop;
        private ListView lvList;
        private EditText etInput;
        private ArrayList<String> mList;
        private PopupWindow popup;
        private MyAdapter mAdapter;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            ivDrop = (ImageView) findViewById(R.id.iv_drop);
            etInput = (EditText) findViewById(R.id.et_input);
            ivDrop.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    showPopup();
                }
            });
            lvList = new ListView(this);
            lvList.setBackgroundResource(R.drawable.listview_background);
            initData();
            lvList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    etInput.setText(mList.get(position));
                    popup.dismiss();
                }
            });
        }
        private void initData() {
            mList = new ArrayList<>();
            for (int i = 0; i < 200; i++) {
                mList.add("用户名" + i);
            }
            mAdapter = new MyAdapter();
            lvList.setAdapter(mAdapter);
        }
        private void showPopup() {
            popup = new PopupWindow(lvList, etInput.getWidth(), 200, true);
            popup.setBackgroundDrawable(new ColorDrawable());
            popup.showAsDropDown(etInput, 0, 0);
        }
        class MyAdapter extends BaseAdapter {
            @Override
            public int getCount() {
                return mList.size();
            }
            @Override
            public Object getItem(int position) {
                return null;
            }
            @Override
            public long getItemId(int position) {
                return position;
            }
            @Override
            public View getView(final int position, View convertView, ViewGroup parent) {
                ViewHolder holder;
                if (convertView == null) {
                    convertView = View.inflate(MainActivity.this, R.layout.list_item, null);
                    holder = new ViewHolder();
                    holder.tvName = (TextView) convertView.findViewById(R.id.tv_name);
                    holder.ivDelete = (ImageView) convertView.findViewById(R.id.iv_delete);
                    convertView.setTag(holder);
                } else {
                    holder = (ViewHolder) convertView.getTag();
                }
                holder.tvName.setText(mList.get(position));
                holder.ivDelete.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        mList.remove(mList.get(position));
                        mAdapter.notifyDataSetChanged();
                    }
                });
                return convertView;
            }
        }
        static class ViewHolder {
            public TextView tvName;
            public ImageView ivDelete;
        }
    }
    

     activity_main.xml

    <?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:padding="10dp"
        tools:context="com.loaderman.dropbox.MainActivity">
    
    
        <RelativeLayout
            android:layout_width="400dp"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_centerHorizontal="true">
    
            <EditText
                android:id="@+id/et_input"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"/>
    
            <ImageView
                android:id="@+id/iv_drop"
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:layout_alignParentRight="true"
                android:layout_marginRight="5dp"
                android:layout_centerVertical="true"
                android:src="@drawable/down_arrow"/>
    
        </RelativeLayout>
    
    </RelativeLayout>
    

     list_item.xml

    <?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:gravity="center_vertical"
        android:orientation="horizontal"
        android:padding="10dp">
        <!--list_item-->
        <ImageView
            android:id="@+id/imageView"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:src="@drawable/user"/>
    
        <TextView
            android:id="@+id/tv_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="文字"
            android:textSize="18sp"/>
    
        <ImageView
            android:id="@+id/iv_delete"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:src="@drawable/delete"/>
    </LinearLayout>
    

     效果图:

  • 相关阅读:
    Linux网络设置
    用户权限 文件或目录权限
    开始写博客了
    php开发中如何判断 是否微信访问
    Linux——安装docker以及docker常用命令
    Java——下划线转驼峰
    前端——JS实现多条件过滤数组
    Linux——通过docker搭建禅道
    免安装版MySQL(windows解压版)安装详细教程以及过程中的问题解决
    数据库——SQL通过某字段的取值范围进行分组汇总
  • 原文地址:https://www.cnblogs.com/loaderman/p/6514542.html
Copyright © 2011-2022 走看看