AlertDialog,PopupWindow,ListView以及接口回调的使用

首先声明下,这些只是核心代码,而且代码都是楼主在word里面直接写的,所以有错误的还请海涵。

今天是本屌完成的公司的第一个项目,具体项目不方便透露,大致就是做一些登陆支付页面给内部的一些游戏调用,历经一个月,其中碰到各种困难,其实现在总结起来就是如果我对android熟悉的话,那么我这个项目一个星期就绰绰有余了。总归还是要补android的基础知识啊,但是接下来就要接触ios了,也是蛋疼的很。好了,废话不多说,在这里总结下我项目中用到的一些技术与碰到的问题,以及如何解决与实现的。总结还是以代码为主,文字为辅。

         1.首先来说下这个登陆界面,登陆界面的话我是采用的自定义的AlertDialog来实现的,关于如何实现这个AlertDialog的自定义布局,其实原理很简单,我这里简单介绍下:

(1)AlertDialog的自定义View布局,只需三步:

1.Viewview=LayoutInflater.from(context).inflate(R.layout.main,null);//获取你要加载的布局,R.layout.main是你的布局名。

2.AlertDialog dialog=newAlertDialog.Builder(context).setView(view).create();//加载你的布局到需要展示的AlertDialog中去。

3.dialog.show();//将AlertDialog展示到activity中去。

(2)然后说下用户名的输入框,我所采用的一些办法。他们给我的需求是首先你要能够将最后一次登陆成功的用户名自动填充到用户名的输入框中,这里我将那些注册成功的用户名和密码通过SharedPreference中去,这个知识点后面再讲,这里知道我的存储方式即可。然后通过给每个用户设置标志位即true或false来表示他们是否是最后一次登陆的,并将按先后顺序展示后面的用户名。我采用的方法是通过单击用户名边上的一个下拉按钮,然后弹出一个PopupWindow来显示这些用户名。

PopupWindow的建立也比较简单,只需要两步:

1.             PopupWindow popup=newPopupWindow(listview,ll.getWidth(),LayoutParams.WRAP_CONTENT,ture);//这里的的话是先new一个popupwindow,然后后面的四个参数分别是:(1)是个ListView,用来填充PopupWindow(2)是PopupWindow的宽度,即width,你希望这个PopupWindow有多宽(3)是PopupWindow的高度,即你所希望的高度,这里我设置的是自适应。(4)这个参数我就不清楚了,大致意思应该就是前面说的对。

2.             Popup.showAsDropDown(view.findViewById(R.id.username_edit));//括号里的表示想要在那个控件下面显示。

 

ListView的创建与接口回调:

Listviewlistview=new ListView(context)创建一个ListView

Listview.setAdapter(myArrayAdapter);//自定义了一个Adapter来填充这个ListView,Adapter的话里面的布局是自定义的,并且写了一个可以回调的接口,用于删除不想要的用户名。然后接口回调的用法是,首先你在你的adapter中定义一个接口,然后再写一个函数来初始化这个接口,再在你想要调用的接口的类中重载这个接口中的方法,最后在adapter中调用这个方法就可以了。具体的代码的话参见我的代码

//这个表示在这个类中重写接口函数

public classMainActivity extends Activity implements MyArrayAdapter.deleteItem{

 

    private PopupWindow popup;

    private ArrayList<String> array;

    @Override

    protected void onCreate(BundlesavedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        array=new ArrayList<>();

       findViewById(R.id.popup).setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                ListView listView=newListView(MainActivity.this);

                MyArrayAdaptermyArrayAdapter=new MyArrayAdapter(MainActivity.this,array);

                listView.setAdapter(myArrayAdapter);

                popup=newPopupWindow(listView,findViewById(R.id.popup).getWidth()

                        ,ViewGroup.LayoutParams.WRAP_CONTENT,true);

            }

        });

    }

 

    @Override

    public void delItem(int position) {

        //这里填充需要重写的方法

    }

}

//这个表示在自定义的Adapter

public classMyArrayAdapter extends BaseAdapter {

 

    private Context context;

    private ArrayList<String> array;

    private deleteItem delItem;

    public MyArrayAdapter(Contextcontext,ArrayList<String> array){

        this.context=context;

        this.array=array;

    }

    @Override

    public int getCount() {

        return array.size();

    }

 

    @Override

    public Object getItem(int position) {

        return array.get(position);

    }

 

    @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=LayoutInflater.from(context).inflate(R.layout.item,null);

            holder=new ViewHolder();

           holder.tv=(TextView)convertView.findViewById(R.id.text);

            convertView.setTag(holder);

        }else{

           holder=(ViewHolder)convertView.getTag();

        }

        holder.tv.setText(array.get(position));

        holder.tv.setOnClickListener(newView.OnClickListener() {

            @Override

            public void onClick(View v) {

                delItem.delItem(position);

            }

        });

        return convertView;

    }

 

    class ViewHolder{

        TextView tv;

    }

 

    public void setInterface(deleteItemdelItem){

        this.delItem=delItem;

    }

 

    public interface deleteItem{

        public void delItem(int position);

    }

}

AlertDialog 是 Android 开发中常用的对话框组件,用于显示一些提示信息或获取用户的确认操作。当用户点击对话框上的按钮时,可以通过回调函数来处理用户的响应。 在 AlertDialog 中,可以设置一个 DialogInterface.OnClickListener 对象来监听按钮的点击事件。这个监听器对象有一个回调方法 onClick,当用户点击了对话框上的按钮时,系统会自动调用这个方法。在 onClick 方法中,可以根据点击的按钮来执行相应的操作。 下面是一个简单的示例代码,演示了如何使用 AlertDialog回调函数: ```java AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle("提示"); builder.setMessage("确认删除该文件吗?"); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 用户点击了确定按钮,执行删除操作 deleteFile(); } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 用户点击了取消按钮,不执行任何操作 } }); AlertDialog dialog = builder.create(); dialog.show(); ``` 在上面的代码中,创建了一个带有确定和取消按钮的 AlertDialog。当用户点击确定按钮时,会执行 deleteFile() 方法;当用户点击取消按钮时,不执行任何操作。 通过设置不同的按钮和监听器,可以根据实际需求来处理不同的对话框操作。希望这个例子能帮助你理解 AlertDialog回调函数用法。如果还有其他问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值