2013-06-21 5 views
0

ВСЕ,Keep ListView items между видами деятельности

Я осмотрел и обыскал в stackoverflow, но на мой вопрос не было ответа или я искал неправильно.

У меня есть вид списка, который отображает текст вместе с кнопкой. Когда эта кнопка нажата, я открываю другое действие с другим списком, передающим текст из предыдущего действия.

Теперь, когда я нажимаю кнопку «Назад», я возвращаюсь к «Activity1». Здесь я могу нажать кнопку снова в той же строке или на другой, и я должен перейти к «Activity2», который должен сохранить ранее помещенный текст в «listview_Activity2» и добавить вновь выделенный текст из «listview_Activity1».

Я создал пользовательские адаптеры для обоих видов списка, а «Activity1» отлично работает при нажатии первой кнопки. Однако при втором нажатии приложение не сохраняет первый выделенный текст.

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

Помогло ли кто-нибудь помочь?

Вот код:

private static List<Product> products; 

@Override 
public void onCreate(Bundle savedInstance) 
{ 
    super.onCreate(savedInstance); 
    products = new ArrayList<Product>(); 
    Intent intent = getIntent(); 
    Product product = intent.getParcelableExtra("cart_product"); 
    products.add(product); 
    CartLineAdapter adapter = new CartLineAdapter(this, R.layout.cart_line, products); 
    setContentView(R.layout.cart); 
    ListView view = (ListView) findViewById(R.id.cart_items); 
    view.setAdapter(adapter); 
} 

ответ

2

Вы должны иметь некоторую настойчивость ваших данных. Если вы хотите, чтобы он был сохранен в настоящее время в приложении, вы можете использовать переменные static. Создайте класс, который содержит static ArrayList или что-то подобное, которое вы добавите в данные после выбора элемента из списка в первом Activity. Затем каждый раз, когда вы переходите ко второму Activity, вы можете заполнить свой список, используя данные из этого static ArrayList.

Ваши другие варианты - хранить эти данные в SharedPreferences (возможно, не идеально подходит для этой ситуации, но может быть) или DB, если вы хотите, чтобы он сохранялся, если приложение закрыто.

Редактировать

Для любого из параметров, которые вы можете переопределить onBackPressed()

@Override 
public void onBackPressed() 
{ 
    // save data here if it hasn't yet been saved 
    super.onBackPressed(); 
} 

Storage Options

+0

для решения БД, можно поймать кнопку "Назад" прессу? У меня есть текстовый элемент управления во втором списке, где пользователь вводит данные (количество), и поэтому я не могу его немедленно сохранить. – Igor

+0

Конечно. См. Мое редактирование – codeMagic

+0

Спасибо. Я буду использовать решение БД. – Igor