本次界面为
实现的功能是,在界面上有两个提示输入文本框,输入的记录都会保存,当再次输入的时候将进行提示
输入确认添加之后,在下面的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; } }