2011-11-09 6 views
2

사용자 지정 목록 어댑터를 사용하여 모든 연락처 목록을 표시하고 사용자는 확인란을 클릭하여 연락처를 선택합니다. 선택한 연락처를 환경 설정에 저장하여 다른 곳에서 테스트 할 수있는 좋은 방법은 무엇입니까? SharedPreferences를 사용하려고 생각했지만 지금까지 SharedPrefs에 배열을 저장하는 방법을 찾을 수 없었습니다. 내가 sqlite 경로를 갈 수 있지만, 그들은 이미 DB에 포함되어 고려하고 조금 과한 것, 그리고 왜 내가 거기에 그들을 참조하지 않을 수 있습니다. 그냥 어떻게 시작 할지도 모르겠다. ... 또한이 메소드를 onDestroy라고도 부르려고했는데, 그 역시 몇 가지 문제가있을 수 있으므로 그에 대한 권장 사항도 도움이 될 수있다. 여기에 몇 가지 코드가 있습니다. (더 많은 정보가 필요하면 알려주세요. 항상 더 많이 있습니다) 당신의 최고의 지식에 감사드립니다.ListActivity에서 선택한 연락처를 저장할 위치는 어디입니까?

ListItemLayout.xml :

<?xml version="1.0" encoding="utf-8"?> 
<TwoLineListItem 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 

    <RelativeLayout 
     android:id="@+id/relativelayout" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 

     <TextView 
      android:id="@android:id/text1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="15sp" 
      android:textStyle="bold" /> 

     <TextView 
      android:id="@android:id/text2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@android:id/text1" 
      android:includeFontPadding="false" 
      android:paddingBottom="4dip" 
      android:textSize="15sp" 
      android:textStyle="normal" /> 

     <CheckBox 
       android:id="@+id/checkbox" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentRight="true" 
       android:focusable="false" 
           /> 
</RelativeLayout> 
</TwoLineListItem> 

ContactPicker 활동 (간결성을 위하여 편집 됨 일부 코드) :

public class ContactPicker extends ListActivity implements Runnable{ 


     private List<Contact> contacts = null; 
     private Contact con; 
     private ContactArrayAdapter cAdapter; 
     private ProgressDialog prog = null; 
     private Context thisContext = this; 
     private CheckBox c1; 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      prog = ProgressDialog.show(this, "Contact List", "Getting Contacts", true, false); 
      Thread thread = new Thread(this); 
      thread.start(); 

      final CheckBox c1 = (CheckBox)findViewById(R.id.checkbox); 

     } 
public void run() {... 
} 
private List<Contact> fillContactsList() {... 
} 
private Handler handler = new Handler() {... 
} 
@Override 
     protected void onListItemClick(ListView l, View v, int position, long id) { 
      super.onListItemClick(l, v, position, id); 
      TextView label = ((TwoLineListItem) v).getText2(); 
      String phoneNumber = label.getText().toString(); 
} 
} 

답변

2

개체 (사용자) 목록을 저장하는 것이 필요하다면 DB를 건너 뛰고 JSON 개체를 만들고이를 공유 환경 설정의 String으로 저장할 수 있습니다. 분명히 저장하려는 사용자의 수에 따라 다르지만, 수백 또는 그 이하이면 모든 성능 저하를 보지 않을 것이며 모든 db 설정을 처리하지 않아도됩니다.

1

네, 당신은 최선의 경로는 SQL 데이터베이스를 사용하는 것입니다. 안드로이드에서 영속적 인 데이터 저장을위한 두 가지 옵션, 즉 sqlite와 공유 환경 설정 만 있습니다. 실제로 더 복잡한 단일 키 값 쌍을 저장하려는 경우 가장 좋은 방법은 sqlite 데이터베이스로 이동하는 것입니다. 데이터 저장 시점까지는 OnCheckChangedListener을 사용하여 개별적으로 항목을 선택하거나 선택을 해제 할 때마다 상점을 트리거합니다.

* 예, 다른 옵션이 있지만 사용하기 쉬운 유일한 옵션입니다.

관련 문제