当前位置 : 主页 > 编程语言 > java >

自定义的下拉框popupwindow

来源:互联网 收集:自由互联 发布时间:2021-06-28
MainActivity.java package com.example.popupwindow;import android.graphics.Color;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterVie
MainActivity.java
package com.example.popupwindow;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
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 AppCompatActivity {
    private EditText et;
    private ImageView iv;
    private PopupWindow popupWindow;
    private ListView listvew;
    private ArrayList
 
   data;
    private MyAdapter myAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et = findViewById(R.id.et);
        iv = findViewById(R.id.iv);
        et.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (popupWindow == null) {
                    popupWindow = new PopupWindow(MainActivity.this);//创建popupwindow对象
                    popupWindow.setWidth(et.getWidth());//设置popupwindow的宽高
                    popupWindow.setHeight(200);
                    popupWindow.setContentView(listvew);//设置popupwindow中加载的视图控件
                    popupWindow.setFocusable(true);//获取焦点!!!重要如果没有写点击事件将会失效!
                }
                popupWindow.showAsDropDown(et, 0, 0);//设置popupwindow位于view的位置,该popupw位于edittext下方
            }
        });
        data = new ArrayList<>();
        for (int i = 0; i < 100; i++) {
            data.add(i + "aaaaa" + i);
        }
        listvew = new ListView(this);
        myAdapter = new MyAdapter();
        listvew.setBackgroundColor(Color.WHITE);
        listvew.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView
   parent, View view, int position, long id) {
                String msg = data.get(position);
                et.setText(msg);
                if (popupWindow != null && popupWindow.isShowing()) {
                    popupWindow.dismiss();
                    popupWindow = null;
                }
            }
        });
        listvew.setAdapter(myAdapter);

    }

    public class MyAdapter extends BaseAdapter {

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

        @Override
        public Object getItem(int position) {
            return position;
        }

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

        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            View view;
            if (convertView == null) {
                view = View.inflate(MainActivity.this, R.layout.item, null);
            } else {
                view = convertView;
            }
            TextView TV = view.findViewById(R.id.tv);
            final ImageView delete = view.findViewById(R.id.delete);
            final String msg = data.get(position);
            delete.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    data.remove(msg);
                    myAdapter.notifyDataSetChanged();

                }
            });

            TV.setText(data.get(position));
            return view;
        }
        //使用viewholder,更加优化
            /*ViewHoldor viewHoldor;
            if (convertView==null){
                convertView=View.inflate(MainActivity.this,R.layout.item,null);
                viewHoldor=new ViewHoldor();
                viewHoldor.tv=convertView.findViewById(R.id.tv);
                viewHoldor.delete=convertView.findViewById(R.id.delete);
                convertView.setTag(viewHoldor);
            }else {
                viewHoldor= (ViewHoldor) convertView.getTag();
            }
            final String datas=data.get(position);
            viewHoldor.tv.setText(datas);
            viewHoldor.delete.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    data.remove(datas);
                    myAdapter.notifyDataSetChanged();
                }
            });
            return convertView;
        }
    }
    static class ViewHoldor{
        TextView tv;
        ImageView delete;*/
    }
}
 
activity_main.xml
 

 

    
  
    
  


 
item.xml
上一篇:56766544456
下一篇:ip归属地查询
网友评论