2010-12-13 32 views
9

Tôi muốn hiển thị danh bạ trong dạng xem danh sách và thêm hành động trên tất cả các số liên lạc, như khi nhấp vào một số liên lạc cụ thể, số này sẽ hiển thị số điện thoại, id thư và xóa số liên lạc cụ thể ...Android. Để hiển thị các số liên lạc dưới dạng danh sách

import android.app.ListActivity; 
import android.content.ContentResolver; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.provider.ContactsContract; 
import android.view.Menu; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 

public class CPDemo1 extends ListActivity { 


    @SuppressWarnings("unchecked") 
public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    String str[]= {"datta","vivek","Nagesh sir","shiv"}; 
    String name; 

     ContentResolver cr = getContentResolver(); 
     Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 
     int nameIdx = cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME); 

     if (cursor.moveToFirst()) 


     do { 

     int x = 0; 

     name = cursor.getString(nameIdx); 
     str[x]= name; 
       x++; 
      ArrayAdapter arr = new ArrayAdapter(this, android.R.layout.simple_list_item_1,str); 

      setListAdapter(arr); 
} while(cursor.moveToNext()); 

     } 
+0

Bạn đang giữ lại những gì bạn muốn? – WarrenFaith

+0

@WarrenFaith ... tôi đang cố gắng hiển thị danh bạ điện thoại nhưng tôi không thể làm như vậy ... trong mã của tôi biến tên được ghi đè các giá trị cốt lõi của chỉ một liên hệ từ danh bạ điện thoại .. tôi muốn hiển thị tất cả các địa chỉ liên lạc đầu tiên trong danh sách xem và sau đó thêm các hành động trên nó .. chỉ cần nhìn thấy nơi tôi đang thiếu các vòng để làm điều đó .. – Datta

Trả lời

1

Đây là một sự thay đổi nhỏ vào mã đăng bởi bạn, nó sẽ giải quyết vấn đề của bạn.

if (cursor.moveToFirst()) 
    { 

     int x = 0; 
    do { 



    name = cursor.getString(nameIdx); 
    Log.d("CONTENT",name); 
    str[x]= name; 
      x++; 
     } while(cursor.moveToNext()); 

    ArrayAdapter<String> arr = new ArrayAdapter<String>(
     this, android.R.layout.simple_list_item_1,str); 

    setListAdapter(arr); 
10

Sự cố trong mã hiện tại của bạn là tạo bộ điều hợp mới cho mỗi vòng lặp. Chỉ cần di chuyển ArrayAdapter arr = new ArrayAdapter(this, android.R.layout.simple_list_item_1,str); ra khỏi do while loop. Và một vấn đề khác, Bạn làm việc quá nhiều trên UIThread (vòng lặp qua con trỏ) để người dùng sẽ thấy một màn hình màu đen hoặc ANR nếu số liên lạc của bạn là rất lớn. Tìm hiểu để sử dụng AsyncQueryHandlerCursorAdapter, đó là tất cả trong liên kết của tôi và liên kết nikki của

Và tại sao bạn không có một cái nhìn tại mặc định hệ ứng dụng trong mã nguồn của Android: Dưới đây là tôi tùy chỉnh hệ App. enter image description here

https://github.com/android/platform_packages_apps_contacts

+4

Để downvoter, Bạn nên để lại một lý do tại sao bạn downvote câu trả lời của tôi. Với một câu hỏi chung như thế này, đừng mong đợi một đoạn trích chạy sao chép-dán. Câu trả lời của tôi giúp anh ta cải thiện mã được cung cấp của anh ấy. –

Các vấn đề liên quan