15.1 进阶版提示文本框,实现简单的通讯录拨号器

本次界面为

 实现的功能是,在界面上有两个提示输入文本框,输入的记录都会保存,当再次输入的时候将进行提示

输入确认添加之后,在下面的listview中将会显示,

添加一条显示一条

显示的电话号码点击时,会进行拨打号码对应的电话

 

一共需要操作三个代码

以下是代码

itemm.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="match_parent"
    android:orientation="horizontal"
    >

    <TextView
        android:id="@+id/name"
        android:text="电话号码"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:textColor="#000"
        android:textSize="20dp"
        />

    <TextView
        android:text="空"
        android:id="@+id/number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#000"
        android:textSize="20dp"
        android:layout_weight="1"/>
</LinearLayout>

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: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"
    tools:context="com.example.xialm.autocomplete_2.MainActivity">

    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />
<LinearLayout
    android:id="@+id/l1"
    android:layout_below="@+id/tv"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="姓名"
        android:textSize="20dp"
        android:textColor="#000"
        />
    <AutoCompleteTextView
        android:id="@+id/au_name"
        android:layout_below="@+id/tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />


</LinearLayout>
    <LinearLayout
        android:id="@+id/l2"
        android:layout_below="@+id/l1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="号码"
            android:textSize="20dp"
            android:textColor="#000"
            />
        <AutoCompleteTextView
            android:id="@+id/au_number"

            android:layout_width="match_parent"
            android:layout_height="wrap_content" />


    </LinearLayout>



    <Button
        android:id="@+id/bu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/l2"
        android:text="点击添加"
        />

    <TextView
        android:paddingTop="8dp"
        android:layout_below="@+id/bu"
        android:id="@+id/tv_jiang"
        android:text="自动提示条目库"
        android:textSize="30dp"
        android:textColor="#000"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />



    <ListView
        android:id="@+id/lv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/tv_jiang"
        android:fastScrollEnabled="true"
        >

    </ListView>



</RelativeLayout>

mainactivity逻辑代码

package com.example.xialm.autocomplete_2;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SyncStatusObserver;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MainActivity extends AppCompatActivity {

    private AlertDialog.Builder myb;

    //放电话号码
    private List<String> list1=new ArrayList<String>();
    //放名字
    private List<String> list2=new ArrayList<String>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //对Builder拿了一个实例
        myb = new AlertDialog.Builder(MainActivity.this);

        //找到关心的控件
        final AutoCompleteTextView auto_number = (AutoCompleteTextView)findViewById(R.id.au_number);
        final AutoCompleteTextView auto_name = (AutoCompleteTextView)findViewById(R.id.au_name);

        Button bu = (Button)findViewById(R.id.bu);
        final ListView lv = (ListView)findViewById(R.id.lv);

        //使用的是android里面自己带的一个布局文件
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line,list1);
        ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line,list2);

        //给补全文本框匹配内容,内容被我们放在了适配器里面
        auto_number.setAdapter(adapter);
        auto_name.setAdapter(adapter2);



        lv.setAdapter(new Myad());
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {

                final String usenum = list2.get(position);

                //通过Builder对象添加询问提示内容
                myb.setMessage("确定要拨打电话吗");
                //设置成功按钮的显示内容和点击事件
                myb.setPositiveButton("是的", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Intent intent = new Intent();
                        //确认意图的种类是想打电话
                        intent.setAction(Intent.ACTION_CALL);
                        Toast.makeText(MainActivity.this,"正在打电话给"+usenum,Toast.LENGTH_SHORT).show();
                        //确定打电话的号码
                        intent.setData(Uri.parse("tel:" + usenum));//number 可以替换为固定的电话
                        //开启意图
                        startActivity(intent);
                    }
                });
                //设置失败按钮的显示内容和点击事件
                myb.setNegativeButton("不是", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this,"取消成功", Toast.LENGTH_SHORT).show();

                    }
                });

                //创建对话框
                AlertDialog AA =myb.create();
                //显示对话框
                AA.show();

            }
        });


        bu.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String s = auto_number.getText().toString();
                String s2 = auto_name.getText().toString();
                //对num进行操作之后再进行一次适配可以更新ui
                list1.add(s);
                list2.add(s2);
                System.out.println("姓名:" + list2 + "  电话:" + list1);
                //auto.setAdapter(adapter);

                //使用的是android里面自己带的一个布局文件
                ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_dropdown_item_1line, list1);
                ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_dropdown_item_1line, list2);

                //给补全文本框匹配内容,内容被我们放在了适配器里面
                auto_number.setAdapter(adapter);
                auto_name.setAdapter(adapter2);

                lv.setAdapter(new Myad());

            }
        });
    }
    //自己定义一个类继承baseadapter
    public class Myad extends BaseAdapter
    {
        Holder myholder;
        @Override
        public int getCount() {
            //创建多少个项目
            return list1.size();
        }

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

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


        @Override
        public View getView(int position, View view, ViewGroup parent) {

            if(view == null){
                //创建新的view对象
                //可以通过一个打气筒将一个布局资源转换为一个view对象
                view = View.inflate(MainActivity.this,R.layout.itemm,null);
                //将布局文件不仅转换成了view,而且最后一个参数用来做了一个组,
                // 可以把刚生成的view添加进来

                myholder = new Holder();
                myholder.tv_1 = (TextView)view.findViewById(R.id.name);
                myholder.tv_2 = (TextView)view.findViewById(R.id.number);

                //打气筒的第二种方法
                //view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.itemm,null);

                //打气筒的第三种方法
                //LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
                //view = inflater.inflate(R.layout.itemm,null);

//设置一个标签,标签可以携带任何信息
                view.setTag(myholder);

            }else{
                //再次拿到这个信息,实现资源的优化共用
                myholder = (Holder)view.getTag();
            }
            myholder.tv_1.setText(list2.get(position));
            //myholder.tv_2.setText(num[position]);
            myholder.tv_2.setText(list1.get(position));
            System.out.println("适配器中获得姓名"+list2.get(position)+"\n适配器中获得号码"+list1.get(position));
            return view;
        }
    }
    class Holder {
        TextView tv_1;
        TextView tv_2;
    }
}

猜你喜欢

转载自www.cnblogs.com/gzyx/p/11775497.html
今日推荐