2015-05-11 43 views
1

我寫了代碼來從mobile.Mow中獲取聯繫人,現在我想要使用共享首選項將活動保存到活動。我在下面分享我的代碼。請告訴我要做什麼做?還有一件事是當所有聯繫人保存到活動中。我想要阻止保存到活動中的聯繫人的傳入和傳出呼叫。我想使用共享首選項將屏幕上的聯繫人保存在屏幕上

import java.util.ArrayList; 
import java.util.Collections; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.ContentResolver; 
import android.content.DialogInterface; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.provider.ContactsContract; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ListView; 
import android.widget.Toast; 

public class BlackListActivity extends Activity implements OnClickListener { 

private static final String TAG = "BlackListActivity"; 
Button add; 
ListView lv; 
String[] contactList ; 
ArrayList<String> list = new ArrayList<String>(); 
ArrayList<String> blcklist = new ArrayList<String>(); 
ArrayAdapter<String> ad; 
String spref_identifier = "com.example.app"; 
String entryIdentifierPrefix = "selectionState_listEntry_"; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_black_list); 

    add = (Button)findViewById(R.id.add); 
    add.setOnClickListener(this); 

    lv = (ListView)findViewById(R.id.listView1); 

    ContentResolver cr = getContentResolver(); 
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 

    if (cur.getCount() > 0) { 
     while (cur.moveToNext()) { 
     String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
     String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
     if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { 
      Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[] { id }, null); 
      while (pCur.moveToNext()) { 
       list.add(name); 
      Log.d(TAG, name); 
      } 
      pCur.close(); 
     } 
     } 

     Collections.sort(list); 


    } 
    cur.close(); 

    int x = list.size(); 
    contactList = new String[x]; 
    contactList = (String[]) list.toArray(contactList); 

    lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 

     public boolean onItemLongClick(AdapterView<?> arg0, View v,final int index, long arg3) { 

//    Toast.makeText(BlackListActivity.this,lv.getItemAtPosition(index).toString(), Toast.LENGTH_LONG).show(); 
      new AlertDialog.Builder(BlackListActivity.this) 
      .setMessage("Are you sure want to delete "+lv.getItemAtPosition(index).toString()+" contact number ?") 
      .setTitle("Deleting Contact....") 
      .setIcon(R.drawable.delete) 
      .setPositiveButton("Delete", new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       Toast.makeText(BlackListActivity.this, lv.getItemAtPosition(index).toString()+" contact number deleted", Toast.LENGTH_LONG).show(); 
       blcklist.remove(index); 
       ad.notifyDataSetChanged(); 
       ad.notifyDataSetInvalidated(); 
      } 
     }) 
     .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       // TODO Auto-generated method stub 

      } 
     }).show(); 
        return false; 
       } 
    }); 

} 

@Override 
public void onClick(View v) { 

    if(v == add){ 

     new AlertDialog.Builder(this) 
     .setTitle("Contact List") 
     .setCancelable(false) 
     .setMultiChoiceItems(contactList, null, new DialogInterface.OnMultiChoiceClickListener() { 

      @Override 
      public void onClick(DialogInterface dialog, int indexSelected, boolean isChecked) { 
       // TODO Auto-generated method stub 
      if(isChecked){ 
      blcklist.add(contactList[indexSelected]); 
      list.remove(contactList[indexSelected]); 

      } 
      else if (!isChecked) { 
       blcklist.remove(contactList[indexSelected]); 
      } 
      }  
     }) 
     .setPositiveButton("Add", new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       ad = new ArrayAdapter<String>(BlackListActivity.this,android.R.layout.simple_list_item_1,blcklist); 
       lv.setAdapter(ad); 
       contactList=(String[]) list.toArray(contactList); 
      } 
     }) 
     .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(DialogInterface dialog, int which) { 

      } 
     }).show(); 
    } 
} 
} 
+0

什麼是錯誤/不需要的行爲? –

回答

0

共享偏好保存在鍵值pair..Its容易保存/提取股價PREF數據的數據量小,但在你的情況下,如果難以大量的數據,如果你有多次接觸那麼它很難取因此它更好地將數據存儲到數據庫中

+0

你能告訴我如何存入數據庫嗎? – Siddhesh

+0

用表格創建數據庫並在表格中添加聯繫信息。檢查這個鏈接http://www.vogella.com/tutorials/AndroidSQLite/article.html – Prachi