2015-11-22 5 views
0

Я создаю приложение для Android, использующее Java в Android Studio. Мне нужно создать представление списка, в котором ранее выбранные элементы будут отображаться как выбранные при воссоздании списка. Можно выбрать несколько элементов из списка. Сначала будет создан список, и мы будем отслеживать, что сохраняется в списке Pair<String, boolean>, где String - элемент списка, а boolean указывает, был ли выбран этот элемент.Как редактировать цвет фона элементов списка элементов программно, прежде чем представление списка будет показано в приложении для Android?

Я обрабатывать изменения цвета фона с помощью

public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
     { 

      if(!tmpSelectedSkills.get(position).isSelected()){ 
       tmpSelectedSkills.get(position).setIsSelected(true); 
       parent.getChildAt(position).setBackgroundColor(
        Color.parseColor("#A9BCF5"));} 
      else{ 
       tmpSelectedSkills.get(position).setIsSelected(false); 
       parent.getChildAt(position).setBackgroundColor(
         Color.parseColor("#ffffff"));} 
     } 

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

Для этого мне нужно получить доступ к

View view 

с подписью onItemClick, что соответствует View которого я хочу, чтобы изменить цвет фона.

+0

Вы справляетесь с этим в своем «ListAdapter». С помощью 'ArrayAdapter', который будет частью вашего метода getView(). Для «SimpleCursorAdapter» это может быть выполнено с помощью «ViewBinder». И так далее. – CommonsWare

+0

@CommonsWare вы имеете в виду общественного абстрактную (положение INT, android.view.View convertView, android.view.ViewGroup родитель) android.view.View GetView ? Если да, то я не уверен, что соответствует конвертируемому здесь, и что представляет родитель (это вид списка?) – genericProgrammer112358

+0

'getView()' является 'абстрактным' только на' BaseAdapter'. Другие классы адаптеров (например, 'ArrayAdapter',' SimpleCursorAdapter') имеют конкретную реализацию, которую вы можете переопределить. Но, да, это метод 'getView()', на который я ссылался в своем предыдущем комментарии. Если вы не знаете, что такое 'getView()', или как оно работает, у вас гораздо больше фундаментальных пробелов в ваших знаниях, которые вам нужно решать, задолго до того, как вы снова начнете думать о проблеме, указанной в вашем вопросе. – CommonsWare

ответ

0

Вы можете создать способ updateData() в вашем adapter. В YourObject из List<YourObject> определите поля boolean для того, чтобы знать выбранные. Когда вы clickOnItem listview, установите для этих полей значение true и notifyDataChanged по методу updateData(). В вашем адаптере проверьте, если поля == true, установите backgroud для строки. Извините, мой плохой английский