0

У меня есть два EditText и ListView внутри FragmentStatePager. Все работает, но записи, которые я делаю с полями EditText в ListView, будут добавлены, но когда я нажму обратно, они не будут сохранены. Как можно их спасти?Как сохранить пользовательские записи ListView?

onCreateView

final CustomListViewAdapter2 adapter2 = new CustomListViewAdapter2(getActivity(), 
       R.layout.swipeviewrowitem, rowItems); 
     listView.setAdapter(adapter2); 




     btnswipeview.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View View) { 

       if(wdhedittext.getText().toString().matches("")) { 
        Toast toast = Toast.makeText(getActivity(), 
          "Bitte Wiederholungszahl angeben", 
          Toast.LENGTH_SHORT); 
        toast.show(); 
       } 
        else if (kgedittext.getText().toString().matches("")) { 
         rowitem2 item = new rowitem2(wdhedittext.getText().toString() + "wdh", kgedittext.getText().toString()); 
         adapter2.add(item); 
        adapter2.notifyDataSetChanged(); 
        } 
        else{ 
         rowitem2 item = new rowitem2(wdhedittext.getText().toString() + "wdh", kgedittext.getText().toString() + "kg"); 
         adapter2.add(item); 
        adapter2.notifyDataSetChanged(); 
        } 




      } 
     }); 

CustomListViewAdapter и rowitem2

class CustomListViewAdapter2 extends ArrayAdapter<rowitem2> { 


     Context context; 

     public CustomListViewAdapter2(Context context, int resourceId, 
            List<rowitem2> items) { 
      super(context, resourceId, items); 
      this.context = context; 
     } 

     private class ViewHolder { 
      TextView txtTitle; 
      TextView txtDesc; 
     } 



     public View getView(int position, View convertView, ViewGroup parent) { 
      ViewHolder holder = null; 
      rowitem2 rowItem = getItem(position); 

      LayoutInflater mInflater = (LayoutInflater) context 
        .getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
      if (convertView == null) { 
       convertView = mInflater.inflate(R.layout.swipeviewrowitem, null); 
       holder = new ViewHolder(); 
       holder.txtTitle = (TextView) convertView.findViewById(R.id.mainText); 
       holder.txtDesc = (TextView) convertView.findViewById(R.id.textView2); 
       convertView.setTag(holder); 
      } else 
       holder = (ViewHolder) convertView.getTag(); 

      holder.txtDesc.setText(rowItem.getDesc()); 
      holder.txtTitle.setText(rowItem.getTitle()); 

      return convertView; 
     } 
    } 
class rowitem2{ 

      private String edittexttitle; 
      private String edittexttitle2; 

      public rowitem2(String title, String desc) { 
       this.edittexttitle = title; 
       this.edittexttitle2 = desc; 
      } 

      public String getTitle() { 
       return edittexttitle; 
      } 

      public String getDesc() { 
      return edittexttitle2; 
     } 

      public void setTitle(String title) { 
       this.edittexttitle = title; 
      } 

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


     } 
+0

Вы получили ответ, который ищете? –

+0

нет, к сожалению нет. – condacc

ответ

0

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

Метод, используемый для сохранения данных, зависит от жизненного цикла. Если он все еще будет там, когда вы запустите приложение в следующий раз. вы можете использовать sqlite для сохранения ваших строк и при запуске приложения вы создаете свой список из этой базы данных. Если вы просто хотите вернуться в свой FragmentActivity, вы можете просто сохранить ссылку на этот список и передать его вашему адаптеру, когда он будет создан снова.

+0

И как я могу это сделать? – condacc

+0

Что? Сохраните данные с помощью sqlite? – xeed

+0

Нет, чтобы сохранить ссылку на список и передать его моему адаптеру. – condacc

0

Чтобы сохранить изменения в EditText, вам нужно будет использовать некоторую экономию на фазе возврата.

Вы можете сохранить данные в 3 путях: SQL-Lite, записать данные в файл и мои любимые данные сохранения в SharedPreferences.

все, что вам нужно сделать, это создать список строк, который займет весь ваш EditText и сохранит его в SharedPreferences.

пожалуйста подробнее о here

Ваша деятельность имеет жизнь Lifecycle поэтому при выходе из деятельности все данные будут удалены.

Удачи!

0

Основным решением для Вашего вопроса является SQLite. Внесите Sqlite в свой проект, и вы можете получать/ретранслировать свои данные в/из списка.

Смежные вопросы