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>
    

     效果图:

  • 相关阅读:
    UISlider无法拖动进度条的问题解决
    记一次UICollectionView中visibleCells的坑
    UITableViewController的子控件不随着滑动
    Pthon的定时任务APScheduler的启动与关闭
    Flask采用Virtualenv+Supervisor+Nginx部署应用
    Python安装Mysql驱动出错解决(最新出炉)
    【iOS9系列】- CoreSportlight内容索引的使用
    雷猴 2016
    【iOS系列】-使用CAGradientLayer设置渐变色
    公钥,私钥,SSL(讲的很生动) (转) 对称加密、非对称加密初探
  • 原文地址:https://www.cnblogs.com/loaderman/p/6514542.html
Copyright © 2011-2022 走看看