2016-02-09 2 views
0

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

public class Movies extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_movies); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    ListView moviesListView = (ListView)findViewById(R.id.moviesListView); 

    final ArrayList<String> topMovies = new ArrayList<String>(asList("The Shawshank Redemption", "The Godfather", "The Godfather: Part 2", 
      "The Dark Knight", "Pulp Fiction","Schlinder's List","12 Angry Men","The Lord of the Rings: The Return of the King", 
      "The Good, the Bad and the Ugly","Fight Club","The Lord of the Rings: The Fellowship of the Ring","Star Wars: Episode V - The Empire Strikes Back", 
      "Forrest Gump","Inception","One Flew Over the Cuckoo's Nest","The Lord of the Rings: The Two Towers","Goodfellas", 
      "The Matrix","Seven Samurai","Star Wars: Episode IV - A New Hope","City of God","Se7en","The Silence of the Lambs", 
      "The Usual Suspects","It's a Wonderful Life","Life is Beautiful","Leon: The Professional","Once Upon a Time in the West", 
      "Spirited Away","Interstellar","Saving Private Ryan","Casablanca","American History X","Psycho","City Lights","Raiders of the Lost Ark", 
      "Rear Window","The Intouchables","Modern Times","The Green Mile","Terminator 2: Judgement Day","The Pianist","The Departed", 
      "Whiplash","Back to the Future","Memento","Gladiator","Apocolypse Now","Dr. Strangelove","The Prestige")); 

    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, topMovies); 

    moviesListView.setAdapter(arrayAdapter); 

    final MediaPlayer mPlayer = MediaPlayer.create(this,R.raw.pindrop); 

    moviesListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

      if(view.getAlpha()==1f) { 

       mPlayer.start(); 
       Toast.makeText(getApplicationContext(), "You Watched " + topMovies.get(position), Toast.LENGTH_LONG).show(); 
       view.animate().alpha(0.2f); 
      } 

      else{ 

       view.animate().alpha(1f); 

      } 
     } 
    }); 
} 

} 
+0

Вы должны сохранить где-нибудь (обычно в базе данных) эти изменения, чтобы отслеживать, отмечен ли фильм как замеченный или нет. – kevinkl3

+0

Самый простой, когда для сохранения данных на Android используется SharedPreferences. Но если у вас есть некоторые сведения о базах данных, вы можете использовать SQLite. Вот несколько ссылок, которые помогут вам начать работу: http://stackoverflow.com/questions/3624280/how-to-use-sharedpreferences-in-android-to-store-fetch-and-edit-values ​​ http: // www.androidhive.info/2011/11/android-sqlite-database-tutorial/ –

+0

Спасибо, ребята. Могут ли общие настройки сохранять все 50 строк в списке? – BelovedAunt

ответ

0

Является ли ваш ArrayList фильмов измененным или статическим? Что произойдет, если список изменится или элемент списка удален. Слишком много элементов в общих предпочтениях было недооценено в обучении разработки Android. Лучшим подходом будет база данных SQLite3.

+0

Спасибо. Все остальное останется прежним. Учитывая, что единственное, что меняется в элементах, это альфа, возможно ли сохранить эти изменения в SQLlite? – BelovedAunt

+0

Да, довольно легко определить таблицу, содержащую столбцы для информации, которую вы хотите сохранить. Чтение из этой таблицы или таблиц довольно просто. – MrMagoo

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