Android 如何在单击项目时从listview中禁用该项目

Android 如何在单击项目时从listview中禁用该项目,android,listview,android-listview,android-contacts,Android,Listview,Android Listview,Android Contacts,我有一个对话框,在对话框中我显示了联系人姓名和来自电话的电子邮件(带有listview)。我希望用户从listview中选择联系人,并将联系人设置为edittext,当用户再次单击时,此联系人将被禁用 普通用户不能从listview中选择一个联系人两次。我的问题是当我选择一些联系人并在重新打开listview上的对话框项目后关闭对话框时,没有保留并且无法禁用拾取的联系人 我的xml文件 <?xml version="1.0" encoding="utf-8"?> <Linear

我有一个对话框,在对话框中我显示了联系人姓名和来自电话的电子邮件(带有listview)。我希望用户从listview中选择联系人,并将联系人设置为edittext,当用户再次单击时,此联系人将被禁用

普通用户不能从listview中选择一个联系人两次。我的问题是当我选择一些联系人并在重新打开listview上的对话框项目后关闭对话框时,没有保留并且无法禁用拾取的联系人

我的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:layout_gravity="center_vertical"
    android:background="@drawable/borderitem"
    android:orientation="vertical" >

     <CheckedTextView
       android:id="@+id/text1"
       android:layout_width="fill_parent"
       android:layout_height="?android:attr/listPreferredItemHeight"
       android:textColor="@android:color/holo_green_dark"
       android:gravity="center_vertical"
       android:checkMark="@drawable/apptheme_btn_check_holo_light"
       android:paddingLeft="6dip"
       android:text="asd"
       android:paddingRight="6dip"
       />

    <TextView
        android:id="@+id/text2"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:textSize="16sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/text3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="14sp"
        android:textStyle="italic"
        android:typeface="sans" />

</LinearLayout>

.java文件

Button buttonPickContact = (Button) findViewById(R.id.contactact_us_btn);
        buttonPickContact.setOnClickListener(new Button.OnClickListener() {

            @Override
            public void onClick(View arg0) {

                list.clear();
                populateList();
                listview.setAdapter(adapter);
                listview.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

                listview.setOnItemClickListener(new OnItemClickListener() {
                    @SuppressLint("ResourceAsColor") @Override

                    public void onItemClick(AdapterView<?> p_arg0, View p_arg1,
                            int p_arg2, long p_arg3) {


                        CheckedTextView checkText = (CheckedTextView) p_arg1
                                .findViewById(R.id.text1);
                        checkText.setChecked(!checkText.isChecked());
                        checkText.setPressed(true);
                    //Here i want to disable already picked contact




                    }

                });
            }
        });

private void populateList() {

        ContactsProvider cpro = new ContactsProvider(getApplicationContext());
        List<Contact> contacts = cpro.getContacts();
        for (Contact cnt : contacts) {
            // add all contacts in map
            HashMap<String, String> map = new HashMap<String, String>();
            // then put email and name of contacts in map
            map.put("name", cnt.name);
            map.put("email", cnt.email);
            list.add(map);
        }

        LayoutInflater inflater = getLayoutInflater();
        final View viewBox = inflater.inflate(R.layout.phone_listview, null);
        Button btn = (Button) viewBox.findViewById(R.id.mailsButton);
        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                setEmails();
            }
        });
        AlertDialog.Builder builder = new AlertDialog.Builder(ReferFriend.this);
        builder.setView(viewBox);
        // dialog, with him create a window ,in this window show name and email
        // of contacts
        dialog = builder.create();
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        listview = (ListView) viewBox.findViewById(R.id.listt);
        dialog.show();
    }
Button buttonPickContact=(Button)findViewById(R.id.contactact\u us\u btn);
buttonPickContact.setOnClickListener(新建Button.OnClickListener()){
@凌驾
公共void onClick(视图arg0){
list.clear();
大众主义者();
setAdapter(适配器);
listview.setChoiceMode(listview.CHOICE\u MODE\u MULTIPLE);
setOnItemClickListener(新的OnItemClickListener(){
@SuppressLint(“ResourceAsColor”)@覆盖
公共链接(适配器视图p_arg0,视图p_arg1,
整数p_arg2,长p_arg3){
CheckedTextView checkText=(CheckedTextView)p_arg1
.findviewbyd(R.id.text1);
checkText.setChecked(!checkText.isChecked());
checkText.setPressed(true);
//这里我想禁用已拾取的联系人
}
});
}
});
私有void populateList(){
ContactsProvider cpro=新的ContactsProvider(getApplicationContext());
List contacts=cpro.getContacts();
用于(联系人cnt:联系人){
//在地图中添加所有联系人
HashMap=newHashMap();
//然后将电子邮件和联系人姓名放入地图中
地图放置(“名称”,cnt.name);
map.put(“email”,cnt.email);
列表。添加(地图);
}
LayoutInflater充气机=getLayoutInflater();
最终视图视图框=充气机。充气(R.layout.phone\u列表视图,空);
按钮btn=(按钮)viewBox.findViewById(R.id.mailsButton);
btn.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
setEmails();
}
});
AlertDialog.Builder=新建AlertDialog.Builder(referefriend.this);
builder.setView(viewBox);
//对话框中,与他创建一个窗口,在此窗口中显示姓名和电子邮件
//联系方式
dialog=builder.create();
对话框.requestWindowFeature(窗口.FEATURE\u无\u标题);
listview=(listview)viewBox.findViewById(R.id.listt);
dialog.show();
}

您需要设置禁用列表项位置的arrayList,并在每个on项上单击将其位置放置到此数组,然后在适配器和getView方法中检查数组是否包含当前位置,然后禁用它。
在getView方法中

if(arrayList.contain(Object)position))
     //disable this row  
然后在Onite中单击

 adapter.arrayList.put(position);