0

FragmentStatePager 안에 두 개의 EditTextListView이 있습니다. 모든 것이 작동하지만 ListView 필드에 EditText 필드로 입력 한 항목이 추가되지만 다시 클릭하면 저장되지 않습니다. 어떻게 그들을 구할 수 있습니까?사용자 지정 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(); 
        } 




      } 
     }); 

CustomListViewAdapterrowitem2

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에 저장하는 문자열 목록을 작성하면됩니다. 당신의 활동은 활동을 종료 할 때 그래서 모든 데이터가 삭제됩니다 생활 Lifecycle을 가지고 더

here에 대해

읽어 보시기 바랍니다.

행운을 빌어 요!

0

질문에 대한 기본적인 해결책은 SQLite입니다. 프로젝트에 Sqlite를 구현하면 데이터를 listview로 가져 오거나 목록에서 가져올 수 있습니다.