2017-12-20 55 views
0

배열을 채우고 listview에 표시하는 기본 앱이 있습니다. 응용 프로그램을 닫고 다시 열면 listview는 비어 있습니다. 배열을 저장할 위치는 어디입니까? 공유 환경 설정에 대한 많은 게시물을 보았지만 배열을 저장할 수있는 해결 방법 인 것처럼 보이고 배열 저장소에있는 모든 Android 설명서를 찾을 수 없습니까? 누구든지 올바른 방향으로 나를 가르쳐 주시겠습니까?배열을 저장하는 방법은 무엇입니까?

내 코드를 요청한 ....

public class ListView_Activity extends AppCompatActivity { 

ArrayList<String>mylistarray = new ArrayList<>(); 

String tempdescr; 
String tempname; 
static final int ADD_NEW_ITEM = 1; 



    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_list_view_); 
     /*add the main toolbar and make some changes to format*/ 
     Toolbar mToolbar = findViewById(R.id.my_toolbar); 
     setSupportActionBar(mToolbar); 
     getSupportActionBar().setDisplayShowTitleEnabled(false); 
     mToolbar.setTitle(R.string.toolbartitle); 
     mToolbar.setSubtitle(R.string.toolbarsubtitle); 
     mToolbar.setTitleTextColor(getResources().getColor(R.color.colorWhite)); 
     mToolbar.setSubtitleTextColor(getResources().getColor(R.color.colorAccent)); 



     final ArrayAdapter<String> myadapter = new ArrayAdapter<String>(ListView_Activity.this, R.layout.simple_list_item_1, R.id.row_item_text_view, mylistarray); 

     /*create array adapter and set to listview*/ 

     final ListView mylistview = findViewById(R.id.mylistview); 
     mylistview.setAdapter(myadapter); 
     mylistarray.add("Test"); 
     myadapter.notifyDataSetChanged(); 

     final FloatingActionButton additembutton = findViewById(R.id.floatingActionButton); 
     additembutton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent additem = new Intent(ListView_Activity.this, Create_Item_Activity.class); 
       startActivityForResult(additem, 1); 
      } 
     }); 




    } 

    /*load options menu to toolbar*/ 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.main_toolbar, menu); 
     return true; 
    } 

    /*handle options menu click events*/ 
    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case R.id.settings: 
       //intent here to load settings activity// 
       return true; 
      case R.id.Feedback: 
       Intent Feedbackemail = new Intent(Intent.ACTION_SEND); 
       Feedbackemail.setType("text/email"); 
       Feedbackemail.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"}); 
       Feedbackemail.putExtra(Intent.EXTRA_SUBJECT, "Feedback"); 
       Feedbackemail.putExtra(Intent.EXTRA_TEXT,"Dear..."+""); 
       startActivity(Intent.createChooser(Feedbackemail,"Send Feedback")); 
       return true; 
      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 



    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data){ 
     if (requestCode == ADD_NEW_ITEM){ 
      if (resultCode == Activity.RESULT_OK) { 
       tempdescr = data.getStringExtra("tempdescr"); 
       tempname = data.getStringExtra("tempname"); 
       mylistarray.add(tempdescr); 
       mylistarray.add(tempname); 



      } 
      if (resultCode == Activity.RESULT_CANCELED) { 
       Toast replacewithcode = Toast.makeText(ListView_Activity.this, "replace with code", Toast.LENGTH_SHORT); 
       replacewithcode.show(); 
      } 
     } 
    } 




} 
+0

배열을 어디서 구합니까? – MeHdi

+0

배열은 mainactivity에서 만들어지고 표준 의도를 통해 채워집니다. 필요하면 코드를 게시합니까? – Adam

+0

그러나 배열이 주 활동에서 작성된 경우 일반적으로 앱을 닫았다가 다시 열면 다시 만들어야합니다. – FreshD

답변

1

당신이 당신의 배열을 저장할 갈 수있는 몇 가지 옵션이 있습니다.

옵션 1.

공유 환경 설정의 신속하고 이해하기 아주 간단합니다. 배열이 크지 않으면이 옵션이 가장 좋습니다. 다음은 공유 환경 설정 가이드 링크입니다. 당신은 아마 문자열로 배열을 변환 GSON 같은 것을 사용하고 문자열을 저장할 것이와

https://developer.android.com/training/data-storage/shared-preferences.html

. 로컬 mysqlite 데이터베이스에

옵션 2.

스토어, 이것은 이해하기 좀 더 복잡하지만 배열에 대해 많은 데이터를 저장할 수 있습니다. 다음은 android sqlite 가이드에 대한 링크입니다. 3.

https://developer.android.com/training/data-storage/sqlite.html

옵션이 하나 설치에 가장 오래 걸릴 것이라고하지만 앱이 데이터를 가져올 수 있도록 할 데이터베이스/서버를 사용합니다. 이 옵션을 사용하면 데이터베이스에 인터넷 연결이 필요합니다.

당신이 그것을 처리 할 수 ​​있다고 생각한다면 mysqlite 데이터베이스를 설정하는 것이 좋겠지 만, 초보자라면 설정하기 훨씬 적은 코드가 될 것이므로 공유 환경 설정에 배열을 저장하는쪽으로 기울여야한다.

+0

Jacob 당신은 최고 사람입니다.이게 바로 제가 가야 할 필요가있는 것입니다. – Adam

+0

Java IO API를 사용하여 파일 시스템에 저장할 수도 있습니다. 그러나 저는 Jacob에 동의합니다. 문자열리스트를 저장하는 가장 좋은 방법은 그것들을 데이터베이스에 저장하는 것입니다. Google은 Room https://developer.android.com/training/data-storage/room/index.html이라는 데이터베이스를 처리하기위한 새로운 API를 출시했습니다. –