0

Я хочу сохранить пользовательский список массивов в общем предпочтении, чтобы я мог прочитать список, когда я открою свое приложение в следующий раз. Я смотрел много уроков и ответов, но я не мог этого понять.Хранить пользовательский список массивов в общих предпочтениях

list_addr.java

public class list_addr { 

public String title; 
public String detail; 


public list_addr(String title, String detail) { 
    super(); 

    this.title = title; 
    this.detail=detail; 

} 

public String getTitle() { 
    return title; 
} 
public void setTitle(String title) { 
    this.title = title; 
} 
public String getDetail() { 
    return detail; 
} 
public void setDetail(String detail) { 
    this.detail = detail; 
} 


@Override 
public String toString() { 
    return title + "\n" ; 
} 

} 

list_adapter.java

enterpublic class list_addr_adapter extends ArrayAdapter<list_addr> { 

Context context; 
int layoutResourceId; 



public list_addr_adapter(Context context, int layoutResourceId, List<list_addr> items) { 
    super(context, layoutResourceId, items); 
    this.layoutResourceId = layoutResourceId; 
    this.context = context; 
    // this.listener=callback; 
} 

/*private view holder class*/ 
private class ViewHolder { 

    TextView txtTitle; 
    TextView txtDetail; 
    ImageView imageview; 
    CheckBox checkbox; 

} 
ViewHolder holder = null; 

public View getView(final int position, View convertView, ViewGroup parent) { 
    final list_addr lists = getItem(position); 
    final int pos=position; 


    LayoutInflater mInflater = (LayoutInflater) context 
      .getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
    if (convertView == null) { 
     convertView = mInflater.inflate(R.layout.items_sav_addr2, null); 
     holder = new ViewHolder(); 
     holder.txtTitle = (TextView) convertView.findViewById(R.id.textTitle); 
     holder.txtDetail = (TextView) convertView.findViewById(R.id.detail); 
     holder.imageview = (ImageView) convertView.findViewById(R.id.imageview); 
     holder.checkbox=(CheckBox)convertView.findViewById(R.id.chkitem); 


     convertView.setTag(holder); 
    } else 
     holder = (ViewHolder) convertView.getTag(); 






    holder.txtTitle.setText(lists.getTitle()); 
    holder.txtDetail.setText(lists.getDetail()); 

     return convertView; 
    } 

} 

Это, как я надуть вид списка -

listView1 = (ListView) findViewById(R.id.listView); 
    list_adapter_invoice adapter = new list_adapter_invoice(this, 
      R.layout.items_row, MyAdaptertwo.rowitems); 

    listView1.setAdapter(adapter); 
+0

ты даже пытался сохранить его в общих настройках, как ваш код не показывает ни одной строки кода сохранения –

+0

@VivekMishra Нет, у меня нет, потому что я не мог понять метод. – TeeKay

+0

затем google для хранения arraylist в общих предпочтениях –

ответ

0

Вы можете сохранить только примитивные типы в общей предпочтительности. Если вам нужно сохранить ArrayList, вы можете сохранить его как строку, разделенную запятой. Во время получения этого использования разделите («,») на эту строку. И вы получите String [].

И если вы хотите сохранить список объектов, то я предлагаю использовать для него класс Singleton. Вот пример Singelton Class. Попробуйте это, вы хотите.

public class ReferenceWrapper { 
private Context context; 
private static ReferenceWrapper wrapper; 
private ArrayList<Object> list; 

private ReferenceWrapper(Context context) { 
    this.context = context; 
} 

public static ReferenceWrapper getInstance(Activity activity) { 
    if (wrapper == null) { 
     wrapper = new ReferenceWrapper(activity); 
    } 
    return wrapper; 
} 


public ArrayList<Object> getList() { 
    return list; 
} 

public void setList(ArrayList<Object> list) { 
    this.list = list; 
} 

} И использовать его как этот

ReferenceWrapper wrapper=ReferenceWrapper.getInstance(MainActivity.this); 
    wrapper.setList(yourArrarlist); 

и получить его в любой деятельности

ReferenceWrapper wrapper=ReferenceWrapper.getInstance(MainActivity.this); 
ArrarList<Object> list= wrapper.getList(yourArrarlist); 

Она возвращает тот же список ArrayList вы сохранили в последнее время. Потому что его только один объект создан Воспрепятствовано мне знать, если это помогает

+0

Как правильно использовать этот класс? – TeeKay

+0

Я обновил свой ответ ..Проверьте его – ADM

-1

Чтобы сохранить ArrayList в общих настройках выполните следующие

// Create List of address that you want to save 
    ArrayList addressList = new ArrayList(); 
    addressList.add(new list_addr()); 
    addressList.add(new list_addr()); 
    SharedPreferences prefs = getSharedPreferences("address", Context.MODE_PRIVATE); 
    //save the user list to preference 
    Editor editor = prefs.edit(); 
    try { 
    editor.putString("addressList", ObjectSerializer.serialize(addressList)); 
    } catch (IOException e) { 
    e.printStackTrace(); 
    } 
    editor.commit(); 

, а затем для получения Список_массивов использовать этот

ArrayList addressList = new ArrayList(); 
// Load address List from preferences 
SharedPreferences prefs = getSharedPreferences("address", Context.MODE_PRIVATE); 
try { 
addressList = (ArrayList) ObjectSerializer.deserialize(prefs.getString("addressList", ObjectSerializer.serialize(new ArrayList()))); 
} catch (IOException e) { 
e.printStackTrace(); 
} 

И это ссылка для objectSerializer class Object Serializer

0

Ответа на этот вопрос: write obje ct в File вместо SharedPreference. Надеюсь, это может помочь

try { 
     ArrayList<List_addr> addrList = new ArrayList<>(); 
     addrList.add(new List_addr("Bangalore", "Its a City")); 
     addrList.add(new List_addr("Delhi", "Its also a City")); 

     //write object into a file 
     FileOutputStream fos = openFileOutput("addrList", Context.MODE_PRIVATE); 
     ObjectOutputStream oos = new ObjectOutputStream(fos); 
     oos.writeObject(addrList); 
     oos.close(); 

     //read object from the file 
     FileInputStream fis = openFileInput("addrList"); 
     ObjectInputStream ois = new ObjectInputStream(fis); 
     ArrayList<List_addr> readAddrList = (ArrayList<List_addr>) ois.readObject(); 
     ois.close(); 

     for (List_addr address : readAddrList) { 
      Log.i("TAG", "Name " + address.getTitle() + " City " + address.getDetail()); 
     } 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } 

Важно: Пожалуйста, обратите внимание на комментарии @MeetTitan.

0
  Step 1: 

      Put string array set into the shared preference. 
      pref.putStringSet(String key, Set<String> values); 

     Step 2: 

      Convert array list of pojo into set. 
      Set<String> set = new HashSet<String>(list); 

     Set 3: 

      Retrive using the getStringSet. 
Смежные вопросы