2013-02-06 114 views
1

我想從手機獲取聯繫人並將其顯示爲列表視圖,我想選擇一些,並將其添加到數據庫中。事情是我不想一一選擇,而不是那從列表視圖中標記和選擇項目

我想標記聯繫人並將其作爲一個整體進行選擇。

它可能在android中?如果是,請幫助我。

+0

創建越來越接觸到列表視圖中的自定義XML佈局(列表視圖與複選框)和每個聯繫人都有一個複選框。現在你必須在該列表視圖中用複選框創建第一個項目作爲「全選」。如果用戶將選中此項(全選複選框),則應檢查所有複選框。 –

回答

3

您可以使用此代碼:

public class ImportContactsFromContactsList extends ListActivity implements Runnable 
{ 
    Cursor phoneCursor; 
    Button done,cancel; 

    final int PROGRESS_DIALOG=0; 
    ProgressDialog progressDialog; 
    ArrayAdapter<ContactModel> adapter; 
    @Override 
    public void onCreate(Bundle saveinst) 
    { 
    super.onCreate(saveinst); 




    progressDialog=ProgressDialog.show(ImportContactsFromContactsList.this, "LoadContacts", "Please wait...", true, false); 
    Thread loadContact=new Thread(this); 
     loadContact.start(); 


} 


public void run() 
{ 
    List<ContactModel>contactList=new ArrayList<ContactModel>(); 
    try 

{ 
     Looper.prepare(); 
    String[] projection = new String[] { 
      ContactsContract.Contacts._ID,ContactsContract.Contacts.DISPLAY_NAME,ContactsContract.Contacts.HAS_PHONE_NUMBER}; 
    String selection = ContactsContract.Contacts.DISPLAY_NAME + "!='null'"; 
    String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC"; 
    Cursor cursor = managedQuery(ContactsContract.Contacts.CONTENT_URI, projection, selection, null, sortOrder); 
    startManagingCursor(cursor); 
    String personName=null; 
    String number=null; 
    if(cursor!=null) 
    { 
     while(cursor.moveToNext()) 
     { 
      String id=cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); 
      personName=cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
      if (Integer.parseInt(cursor.getString(
        cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) 
      { 
        Cursor pCur = getContentResolver().query(
      ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
      null, 
      ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", 
      new String[]{id}, null); 
        pCur.moveToFirst(); 
        number=pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
      pCur.close(); 
      } 
      contactList.add(get(personName,number)); 


     } 

     adapter=new MyContactListAdapter(ImportContactsFromContactsList.this, contactList); 
     handler.sendEmptyMessage(0); 
    } 


    } 
     catch(Exception exce) 
     { 
      exce.printStackTrace(); 
     } 

} 

private final Handler handler=new Handler(){ 

    @Override 
    public void handleMessage(Message msg) 
    { 
     progressDialog.dismiss(); 
     setListAdapter(adapter); 
     setContentView(R.layout.contactlist); 

    } 
}; 

public ContactModel get(String name,String number) 
{ 
    return new ContactModel(name,number); 
} 

} 

佈局代碼:

<?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:background="@drawable/background1" > 
    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Add Contacts In BlackList" 
     android:layout_gravity="center" 
     android:gravity="center" 
     android:layout_marginTop="80dp" 
     android:textSize="40sp" 
     android:textAppearance="?android:attr/textAppearanceLarge" ></TextView> 
    <FrameLayout android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="10dp"> 

    <ListView 
     android:id="@android:id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="#302217" 
     android:cacheColorHint="#333333" 
     android:divider="#999966" 
     android:dividerHeight="2dp" 
     android:fastScrollEnabled="true" > 

    </ListView> 
    <TextView android:id="@android:id/empty" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="There Is No Contact" 
     android:textSize="30sp" 
     android:textAppearance="?android:attr/textAppearanceLarge"> 
    </TextView> 
    </FrameLayout> 

</LinearLayout> 

MyContactListAdapter.java代碼:

public class MyContactListAdapter extends ArrayAdapter<ContactModel> 
{ 
    private final List<ContactModel> list; 
    private final Activity context; 
public MyContactListAdapter(Activity context,List<ContactModel> list) 
{ 
    super(context,R.layout.contactliststyle,list); 
    this.context=context; 
    this.list=list; 

} 

public class ViewHolder 
{ 
    protected TextView txtName,txtNumber; 
    protected CheckBox selection ; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View view = null; 
    if (convertView == null) { 
     LayoutInflater inflator = context.getLayoutInflater(); 
     view = inflator.inflate(R.layout.contactliststyle, null); 
     final ViewHolder viewHolder = new ViewHolder(); 
     viewHolder.txtName = (TextView) view.findViewById(R.id.txtView_Name); 
     viewHolder.txtNumber = (TextView)view.findViewById(R.id.txtView_Number); 
     viewHolder.selection = (CheckBox)view.findViewById(R.id.checkbtn_selectContact); 
     viewHolder.selection 
       .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

        public void onCheckedChanged(CompoundButton buttonView, 
          boolean isChecked) { 
         ContactModel element = (ContactModel)viewHolder.selection 
           .getTag(); 
         element.setSelected(buttonView.isChecked()); 
         if(buttonView.isChecked()) 
         { 
         String selectedName=element.getName(); 
         String selectedNumber=element.getNumber(); 
         Transactions trans=new Transactions(context); 
         trans.addBlackListNumberFromCallLog(selectedNumber, selectedName); 

         } 
         else 
         { 
          String selectedNumber=element.getNumber(); 
          Transactions trans=new Transactions(context); 
          trans.dropBlackListNumber(selectedNumber); 
         } 

        } 
       }); 
     view.setTag(viewHolder); 
     viewHolder.selection.setTag(list.get(position)); 
    } else { 
     view = convertView; 
     ((ViewHolder) view.getTag()).selection.setTag(list.get(position)); 
    } 
    ViewHolder holder = (ViewHolder) view.getTag(); 
    holder.txtName.setText(list.get(position).getName()); 
    holder.txtNumber.setText(list.get(position).getNumber()); 
    holder.selection.setChecked(list.get(position).isSelected()); 
    return view; 
} 

} 

ContactModel.java代碼:作爲getter setter很簡單。

public class ContactModel 
{ 

private String name; 
private String number; 
private boolean selected; 
public ContactModel(String personName,String phNumber) 
{ 
    this.name=personName; 
    this.number=phNumber; 
    selected=false; 
} 
public String getName() { 
    return name; 
} 
public void setName(String name) { 
    this.name = name; 
} 
public String getNumber() { 
    return number; 
} 
public void setNumber(String number) { 
    this.number = number; 
} 
public boolean isSelected() { 
    return selected; 
} 
public void setSelected(boolean selected) { 
    this.selected = selected; 
} 

} 

ContactListStyle 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="wrap_content" 
    android:orientation="vertical"> 

    <Button 
     android:id="@+id/done_button" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Done" 
     android:layout_gravity="center_horizontal" /> 

    <RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="40dp" > 
    <TextView 
     android:id="@+id/txtView_Name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Name" 
     android:textColor="#FFFFFF" 
     android:textSize="20px" > 
    </TextView> 
    <CheckBox 
     android:id="@+id/checkbtn_selectContact" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_marginLeft="4px" 
     android:layout_marginRight="10px" > 
    </CheckBox> 
<TextView 
     android:id="@+id/txtView_Number" 
     android:layout_below="@id/txtView_Name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Number" 
     android:textColor="#FFFFFF" 
     android:textSize="20px" > 
    </TextView> 

</RelativeLayout> 
</LinearLayout> 
+0

什麼是現場交易 – ammukuttylive

+0

交易是一個類,我把所有與數據庫相關的方法。用於執行數據庫的任何操作。我認爲你不會在你的應用中使用數據庫,所以忘了它。 –

+0

這個代碼來自我的應用程序,它已經在Play商店中推出。 https://play.google.com/store/apps/details?id=com.kartik.callandsmsblocker –

1

你可以看到this demo從列表視圖中選擇多個項目。 並且爲了獲得該列表視圖中的比賽,您可以看到thisthis演示。

希望你能從那裏獲得完整的信息。

隨時發表評論。

0

如果我很清楚你的問題,我建議你使用多選列表的Android對話框。請閱讀並給出聯繫人列表作爲數組適配器的源。如果需要,請閱讀此示例。

herehere

相關問題