Пометка текста в строке списка как «ЧИТАЙТЕ» постоянно - PullRequest
1 голос
/ 04 ноября 2010

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

public void onListItemClick(ListView parent, View v, int position, long id) {
  LinearLayout ll = (LinearLayout) v;
  TextView clickedTextView = (TextView) ll.getChildAt(1);
  clickedTextView.setTextColor(Color.GREEN);
  StringTokenizer st = new StringTokenizer(strings[position],"<@>");
  for(int i=0;i<3;i++)
  {
    coupon = st.nextToken("<@>");
  }
  sharable=st.nextToken();
  Intent i = new Intent(getApplicationContext(), CouponImage.class);
  i.putExtra("The coupon", coupon);
  i.putExtra("Sharable", sharable);
  startActivity(i);
}

Ответы [ 2 ]

0 голосов
/ 04 ноября 2010

Это потому, что всякий раз, когда вы прокручиваете список, выходите из приложения, возвращаетесь и т. Д., Вы получаете ListAdapter, который повторно отображает представление строк, и ваши представления в списке никогда не бывают 1: 1 с базовыми данными из-заПросмотр утилизации.Если вы хотите, чтобы ваши изменения были «липкими», вам нужно подумать об изменении базовых данных для ListAdapter таким образом, чтобы адаптер знал, как правильно отображать, а не просто изменять этот конкретный экземпляр строки - вы пометка элемента чтение, а не просто установка одного экземпляра визуализированного представления элемента как прочитанного.Вы можете думать об этом как о MVC, если это поможет.

То есть реальное изменение здесь должно быть в методе getView вашего адаптера, с изменением его источника данных, а затем, возможно,вызов notifyDataSetChanged .

Ответ Фредли о SQLite или хранилище может быть излишним, если эти данные не должны сохраняться после этого одного сеанса в деятельности, или если данные, с которыми вы работаете, также являются временными (например, изменяются сетевые данныечасто это временно загружается в ArrayAdapter), и в любом случае это немного вводит в заблуждение, потому что просто выгрузка данных на диск не решает фундаментальную проблему с вашей связью представлений данных с вашими моделями .

0 голосов
/ 04 ноября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...