Android 如何将ListView内容放入EditText?

Android 如何将ListView内容放入EditText?,android,Android,我是Android编程新手,我计划创建一个应用程序,显示联系人和来自它的电话 我已经通过列表视图显示了我的联系人,我想做的是,当我单击某个联系人时,它会弹出到我的编辑文本中,然后我会单击我的呼叫按钮。(如图所示)联系人和编辑文本的屏幕截图 有什么办法吗 activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.

我是Android编程新手,我计划创建一个应用程序,显示联系人和来自它的电话

我已经通过列表视图显示了我的联系人,我想做的是,当我单击某个联系人时,它会弹出到我的编辑文本中,然后我会单击我的呼叫按钮。(如图所示)联系人和编辑文本的屏幕截图

有什么办法吗

activity_main.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="vertical"
    android:id="@+id/idLayout">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="20dp"
        android:layout_marginTop="20dp"
        android:text="@string/idContacts"
        android:textAlignment="center"
        android:textSize="15pt" />

    <EditText
        android:id="@+id/number"
        android:layout_width="match_parent"
        android:layout_height="51dp"
        android:layout_marginBottom="10dp"
        android:inputType=""
        android:labelFor="@+id/number"
        android:textSize="25sp" />

    <Button
        android:id="@+id/callBtn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="20dp"
        android:text="Call" />

    <ListView
        android:id="@+id/idList"
        android:layout_width="400dp"
        android:layout_height="188dp"></ListView>

</LinearLayout>

这是我的MainActivity.java

package com.example.spyk.testmessageandcall;

import android.Manifest;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.provider.ContactsContract;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {

    ListView listview;
    EditText numberTxt;
    private static final int PERMISSIONS_REQUEST_READ_CONTACTS = 100;
    Cursor c;
    ArrayList<String> contacts;


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

        listview = (ListView) findViewById(R.id.idList);

        int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS);

        if (permissionCheck == PackageManager.PERMISSION_GRANTED){
            showContacts();
        }
        else{
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.READ_CONTACTS},
                    PERMISSIONS_REQUEST_READ_CONTACTS);
        }

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                this, android.R.layout.simple_list_item_1,contacts);
        listview.setAdapter(adapter);
        listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

            }
        });
    }
    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions,
                                           int[] grantResults){
        if(requestCode == PERMISSIONS_REQUEST_READ_CONTACTS){
            if(grantResults[0] == PackageManager.PERMISSION_GRANTED){
                showContacts();
            }
            else{
                Toast.makeText(this, "Names will display if you grant permission", Toast.LENGTH_SHORT).show();
            }
        }
    }

    private void showContacts(){
        c = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null, ContactsContract.Contacts.DISPLAY_NAME + " ASC ");

        contacts = new ArrayList<String>();
        while (c.moveToNext()){

            String contactName = c.getString(c.getColumnIndex( ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
            String phNumber = c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
            contacts.add("Name: "+contactName + "\n" + "Phone #: " +phNumber);
        }
        c.close();
    }

}
package com.example.spyk.testmessageandcall;
导入android.Manifest;
导入android.content.pm.PackageManager;
导入android.database.Cursor;
导入android.provider.contacts合同;
导入android.support.v4.app.ActivityCompat;
导入android.support.v4.content.ContextCompat;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.EditText;
导入android.widget.ListView;
导入android.widget.TextView;
导入android.widget.Toast;
导入java.util.ArrayList;
公共类MainActivity扩展了AppCompatActivity{
列表视图列表视图;
编辑文本编号text;
私有静态最终整数权限\请求\读取\联系人=100;
光标c;
ArrayList联系人;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listview=(listview)findViewById(R.id.idList);
int permissionCheck=ContextCompat.checkSelfPermission(这是Manifest.permission.READ_CONTACTS);
if(permissionCheck==PackageManager.PERMISSION\u已授予){
showContacts();
}
否则{
ActivityCompat.requestPermissions(此,
新字符串[]{Manifest.permission.READ_CONTACTS},
权限(请求、读取、联系人);
}
ArrayAdapter适配器=新的ArrayAdapter(
这个,android.R.layout.simple\u list\u item\u 1,contacts);
setAdapter(适配器);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共无效onItemClick(AdapterView AdapterView、View视图、int i、long l){
}
});
}
@凌驾
public void onRequestPermissionsResult(int-requestCode,字符串[]权限,
int[]格兰特结果){
if(requestCode==权限\请求\读取\联系人){
if(grantResults[0]==已授予PackageManager.权限){
showContacts();
}
否则{
Toast.makeText(这是“如果您授予权限,将显示名称”,Toast.LENGTH_SHORT.show();
}
}
}
私人通讯录(){
c=getContentResolver().query(ContactsContract.CommonDataTypes.Phone.CONTENT\u URI,null,null,null,ContactsContract.Contacts.DISPLAY\u NAME+“ASC”);
联系人=新的ArrayList();
while(c.moveToNext()){
String contactName=c.getString(c.getColumnIndex(ContactsContract.CommonDataTypes.Phone.DISPLAY_NAME));
String phNumber=c.getString(c.getColumnIndex(ContactsContract.CommonDataTypes.Phone.NUMBER));
联系人。添加(“姓名:“+contactName+”\n“+”电话号码:“+phNumber”);
}
c、 close();
}
}
编辑 我需要的是,当我单击某个联系人时,edittext上只会显示其号码,以下是其变量:


只需在onItemClick中键入此项,即可更改editText的文本

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
             String[] splits = contacts.get(i).split(":");

             numberTxt.setText(splits[splits.length-1])
        }
    });

先生,你能解释一下这能做什么吗先生?你的呼叫按钮在哪里?我现在已经打开了一个呼叫按钮先生@rabee如果用户拒绝了阅读联系人的权限,联系人数组列表将为空,你的应用程序可能会崩溃。先生,我已经实现了代码,但是当我运行我的应用程序并单击联系人时,它崩溃了。我遗漏了什么吗?先生,我现在已经解决了崩溃问题,我只是忘了用id初始化edittext。先生,我想指定edittext中只有数字。你能帮我指定edittext吗?哦,初始问题!是,检查编辑后的答案。我希望能解决你的问题,我放了一个新的图像,先生,因为电话号码有一个变量,我只需要在编辑文本中放一个phNumber变量,先生。
startActivity(new Intent(Intent.ACTION_DIAL, Uri.fromParts("tel", numberTxt.getText().toString(), null)));