Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/47: Рейтинг темы: голосов - 47, средняя оценка - 4.87
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 133
1

Изменить цвет у item-a в listView

11.10.2016, 08:12. Показов 9791. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет, вопрос такой.
Задача такая:
Допустим у меня есть элементы listview разноцветные: (мне нужно при нажатие что бы он стал белым(элемент), и когда нажму на него еще раз принял свой цвет обратно.)
1. То есть прям перекрасить элемент в белый цвет. (В чем проблема :
я делал так :
Java
1
2
3
4
5
int color = Color.TRANSPARENT; //запоминал предыдущий цвет, 
                   Drawable background = linerLayuot.getBackground();
                   if (background instanceof ColorDrawable)
                       color = ((ColorDrawable) background).getColor();
            linerLayuot.setBackgroundColor(Color.WHITE); //передал белый.
Когда нажимаю второй раз передал запомненный цвет обратно.
Но когда например нажимаю на другие элементы(не вернув цвет первому), начинает путаница происходить, цвета начинаю мешаться.
Есть какие-нибуть варианты?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.10.2016, 08:12
Ответы с готовыми решениями:

Цвет item в listview
учусь работать с listview и наткнулся на такую проблему: когда проверял в эмуляторе, то все было...

Как изменить цвет пункта ListView при нажатии на него и сохранять его цвет при проматывании списка?
Здравствуйте, подскажите, пожалуйста, как изменить цвет пункта ListView при нажатии на него и...

Изменить цвет текста в адаптере ListView
Здравствуйте, подскажите пожалуйста, как мне изменить по клику на item цвет текста в item...

ListView: передача данных в item
Элементы ListView содержат три TextView и два ImageView. В первый TextView записываю данные так: ...

15
266 / 242 / 96
Регистрация: 11.01.2015
Сообщений: 673
11.10.2016, 09:56 2
Добавь поле в элемент массива(или коллекции), которую отображаешь в листе, хранящее значение цвета элемента. Или boolean храни - выделен элемент/не выделен.
0
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 133
11.10.2016, 09:57  [ТС] 3
Mikalai, Даже вот так попробовал,
XML
1
2
3
4
5
6
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"  android:drawable="@color/yellow_lids" />
    <item android:state_selected="true"  android:drawable="@color/default_color" />
    <item  android:state_selected="false" android:drawable="@color/yellow_lids" />
</selector>
Java
1
    holder.slideCalls.setBackgroundResource(R.drawable.listcell);
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 callList.setOnItemClickListener(new AdapterView.OnItemClickListener() { //клилк по итему
            @Override
            public void onItemClick(AdapterView<?> parent, View itemClicked, int position,
                                    long id) {
               CallAdapter.CallHolder cc = (CallAdapter.CallHolder) itemClicked.getTag();
               if(cc.rl.getVisibility() == View.VISIBLE) {
              
              
                   cc.rl.setVisibility(View.GONE);
                   cc.linerFix.setVisibility(View.VISIBLE);
             
                  itemClicked.setSelected(false);
                   cc.slideCalls.setSelected(false);
             
                } else {
           
                   cc.rl.setVisibility(View.VISIBLE);
                   cc.linerFix.setVisibility(View.GONE);
                   cc.slideCalls.setSelected(true);
     
                   itemClicked.setSelected(true);
               
                }
 
 
            }
        });
цвет остается желтым((
0
Модератор
3387 / 2159 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
11.10.2016, 10:19 4
TonyBicbaev, ничем хорошим игра с цветами не из адаптера не кончится - если вы начнете скролить лист у вас все цвета перемешает так как адаптер имеет свое мнение по поводу того как их красить. красьте их через установления некого поля в массиве данных отображаемых в лист - саму окраску реализуйте в адаптере
0
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 133
11.10.2016, 10:28  [ТС] 5
vxg, я понимаю, я так и делал вот сообщение пред вами это все с адаптера,
задаю
Java
1
 row.setBackgroundResource(R.drawable.listcell); // вот с адаптера  но даже  setSelect не работает
0
Модератор
3387 / 2159 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
11.10.2016, 11:45 6
TonyBicbaev, адаптера в вашем коде нет
0
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 133
11.10.2016, 11:57  [ТС] 7
vxg,
Цитата Сообщение от TonyBicbaev Посмотреть сообщение
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
CallAdapter.CallHolder cc = (CallAdapter.CallHolder) itemClicked.getTag(); //вот он адаптер, по тегу получаю нужный мне элементы, 
* * * * * * * *if(cc.rl.getVisibility() == View.VISIBLE) {
cc.rl.setVisibility(View.GONE);
* * * * * * * * * *cc.linerFix.setVisibility(View.VISIBLE);
itemClicked.setSelected(false);
* * * * * * * * * *cc.slideCalls.setSelected(false);
} else {
cc.rl.setVisibility(View.VISIBLE);
* * * * * * * * * *cc.linerFix.setVisibility(View.GONE);
* * * * * * * * * *cc.slideCalls.setSelected(true);
itemClicked.setSelected(true);
}
}
* * * * });
Добавлено через 3 минуты
код самого адаптера большой, так как содержит около 15 элементов.
0
Модератор
3387 / 2159 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
11.10.2016, 12:16 8
TonyBicbaev, это не адаптер, это холдер элемента. просто может быть такая ситуация. есть адаптер. он генерирует или переиспользует view назначая тексты и цвета в соответствии с данными отображаемыми в list. этот же адаптер при генерации view заполняет холдер. по идее холдер не должен содержать ничего кроме ссылок на содержимое элемента для быстрого доступа к ним. за само содержимое и цвет отвечает не холдер, а адаптер. вы хватаете холдер, выковыриваете из него ссылки на содержимое и манипулируете с ним не затрагивая отображаемые в list данные. если вдруг адаптер проснется и переиспользует view над которой вы так поработали он может назначить содержимому другой текст или цвет или еще лучше - перемешать их с тем что есть (если вы то так делали то так)
0
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 133
11.10.2016, 12:25  [ТС] 9
окей вот что возвращает адаптер
XML
1
2
3
4
5
6
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"  android:drawable="@color/yellow_lids" />
    <item android:state_selected="true"  android:drawable="@color/default_color" />
    <item  android:state_selected="false" android:drawable="@color/yellow_lids" />
</selector>
для простоты записи.
Java
1
2
3
4
5
6
7
8
9
10
public View getView(int position, View convertView, ViewGroup parent) { 
 View row = convertView;
 
 
        LayoutInflater inflater = ((Activity) context).getLayoutInflater(); 
    
        row = inflater.inflate(layoutResourceId, parent, false);
row.setBackgroundResource(R.drawable.listcell); // задаю цвет
return row;
}
0
Модератор
3387 / 2159 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
11.10.2016, 12:38 10
TonyBicbaev, какой то у вас адаптер не адаптер...
вот для сравнения
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
public class AnswerDesc {
    public String id;
    public String name;
    public String text;
    public int status;
}
 
public class AnswersAdapter extends BaseAdapter {
    private Context context;
    private ArrayList<AnswerDesc> answers;
 
    public AnswersAdapter(Context context, ArrayList<AnswerDesc> answers) {
        this.context = context;
        this.answers = answers;
    }
 
    @Override
    public int getCount() {
        return answers.size();
    }
 
    @Override
    public Object getItem(int position) {
        return answers.get(position);
    }
 
    @Override
    public long getItemId(int position) {
        return 0;
    }
 
    private class ViewHolder {
        public TextView name;
        public TextView text;
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        //view
        View view = null;
        ViewHolder h = null;
        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(R.layout.answers_item, null);
 
            h = new ViewHolder();
            h.name = (TextView)view.findViewById(R.id.name);
            h.text = (TextView)view.findViewById(R.id.text);
            
            view.setTag(h);
        } else {
            view = convertView;
            h = (ViewHolder)convertView.getTag();
        }
        
        //values
        h.name.setText(answers.get(position).name);
        h.text.setText(answers.get(position).text);
        
        //colors
        if (answers.get(position).status == 1) {
            view.setBackgroundResource(R.drawable.rectangle_green);
            h.name.setTextColor(0xFFFFFFFF);
            h.text.setTextColor(0xFFFFFFFF);
        } else {
            view.setBackgroundResource(R.drawable.rectangle_red);
            h.name.setTextColor(0xFFFFFFFF);
            h.text.setTextColor(0xFFFFFFFF);
        }
 
        return view;
    }
}
0
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 133
11.10.2016, 12:55  [ТС] 11
vxg, окей щас будет весь)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
ublic class CallAdapter extends ArrayAdapter<Call> implements Filterable {
 
 
private List<Call> items; //контент
private int layoutResourceId; //id экрана
private Context context; // контекст
        CallHolder holder = null;
        CharSequence textday, texttime,rezultDate; //перевод дату в текст
        char[] tempChar = new char[1];
private ArrayList<Call> arraylist; //массив
        StringBuffer sb;
static int  height = 350;
 
public CallAdapter(Context context, int layoutResourceId, List<Call> items) { //инициализация конструктора
        super(context, layoutResourceId, items);
        this.layoutResourceId = layoutResourceId;
        this.context = context;
        this.items = items;
        this.arraylist = new ArrayList<Call>();
        this.arraylist.addAll(items);
        notifyDataSetChanged();
        }
 
 
   @Override
   public int getCount() {
           if (items != null)
                   return items.size();
           return 0;
   }
 
 
        @Override
        public Call getItem(int position) {
                if (items != null)
                        return items.get(position);
                return null;
        }
 
 
        @Override
        public long getItemId(int position) {
                if (items != null)
                        return position;
                return  0;
        }
        public List<Call> getItems() {
                return items;
        }
 
        public void setItems(List<Call> items) {
                this.items = items;
                this.arraylist = new ArrayList<Call>();
                this.arraylist.addAll(items);
                notifyDataSetChanged();
        }
 
@Override
public View getView(int position, View convertView, ViewGroup parent) { //формируем адаптер
        View row = convertView;
 
 
        LayoutInflater inflater = ((Activity) context).getLayoutInflater(); //получаем наш экран
        //   View view = super.getView(position,convertView,parent);
        row = inflater.inflate(layoutResourceId, parent, false);
 
            /*Инициализация компонентов*/
 
        holder = new CallHolder();
        holder.call = getItems().get(position);
 
    holder.slideCalls = (LinearLayout) row.findViewById(R.id.slideCalls); //handler
 
    holder.slideCalls.setTag(holder);
    holder.slideCalls.setClickable(false);
    holder.slideCalls.setFocusableInTouchMode(false);
    holder.slideCalls.setFocusable(false);
               holder.rl = (LinearLayout) row.findViewById(R.id.linearCall); //handler
 
               holder.rl.setTag(holder);
               holder.rl.setClickable(false);
               holder.rl.setFocusableInTouchMode(false);
               holder.rl.setFocusable(false);
 
               holder.linerSlideFix = (LinearLayout) row.findViewById(R.id.linerSlideFix);
               holder.linerSlideFix.setTag(holder);
               holder.linerSlideFix.setClickable(false);
               holder.linerSlideFix.setFocusableInTouchMode(false);
               holder.linerSlideFix.setFocusable(false);
 
               holder.linerFix = (LinearLayout) row.findViewById(R.id.linerFix);
               holder.linerFix.setTag(holder);
               holder.linerFix.setClickable(false);
               holder.linerFix.setFocusableInTouchMode(false);
               holder.linerFix.setFocusable(false);
 
   holder.linerSeparator2 = new ImageView((Activity) context);
               holder.linerSeparator2.setImageResource(R.drawable.line);
               holder.linerSeparator2.setBackgroundColor(Color.GREEN);
 
               holder.linerSeparator = new ImageView((Activity) context);
               holder.linerSeparator.setImageResource(R.drawable.line);
               holder.linerSeparator.setBackgroundColor(Color.GREEN);
               LinearLayout.LayoutParams imp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 1);
               imp.weight = LinearLayout.LayoutParams.MATCH_PARENT;
               imp.setMargins(0,5,0,5);
               imp.height = 1;
 
               holder.linerSeparator.setLayoutParams(imp);
               holder.linerSeparator2.setLayoutParams(imp);
 
               holder.bid = new TextView((Activity) context);
               holder.bid.setTextColor(Color.BLACK);
               holder.bid2 = new TextView((Activity) context);
               holder.bid2.setTextColor(Color.BLACK);
               holder.closerMessage = new TextView((Activity) context);
               holder.closerMessage.setTextColor(Color.BLACK);
               LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
               llp.gravity = Gravity.RIGHT;
               llp.setMargins(0,5,5,5);
               holder.bid.setLayoutParams(llp);
               holder.bid2.setLayoutParams(llp);
               holder.closerMessage.setLayoutParams(llp);
   holder.cloack = (ImageView) row.findViewById(R.id.cloackImage); //часики
               holder.cloack.setTag(holder.call);
               holder.cloack.setFocusable(false);
               //  holder.cloack.setClickable(false);
 
               holder.removeButton = (ImageButton) row.findViewById(R.id.btnDel); //удалить
               holder.removeButton.setTag(holder.call);
               holder.removeButton.setFocusable(false);
 
               holder.editButton = (ImageButton) row.findViewById(R.id.btnRed); //редактировать
               holder.editButton.setTag(holder.call);
               holder.editButton.setFocusable(false);
 
               holder.important = (ImageButton) row.findViewById(R.id.btnImp); //важно
               holder.important.setTag(holder);
               holder.important.setFocusable(false);
 
               holder.closerLids = (ImageButton) row.findViewById(R.id.btnCloserLids); //важно
               holder.closerLids.setTag(holder);
               holder.closerLids.setFocusable(false);
 
               holder.number = (Button) row.findViewById(R.id.btnNumber); //номер
               holder.number.setTag(holder.call);
               holder.number.setFocusable(false);
               holder.number.setClickable(true);
Добавлено через 1 минуту
vxg, продолжение
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
          holder.time = (TextView) row.findViewById(R.id.textDate); //текст время
               holder.time.setFocusable(false);
               holder.time.setClickable(false);
               // setMailTextChangeListener(holder);
               holder.nameUsers = (TextView) row.findViewById(R.id.textName); //имя пользовотеля
               holder.nameUsers.setFocusable(false);
               holder.nameUsers.setClickable(false);
               holder.comment = (TextView) row.findViewById(R.id.textComment); //коментарий
 
               holder.day = (TextView) row.findViewById(R.id.textDay); //день
 
               holder.day.setFocusable(false);
               holder.day.setClickable(false);
               holder.timeToCall = (TextView) row.findViewById(R.id.textMsg); //сообщение
               addTextToCall();
               setNameTextListeners(holder);
 
               if (!holder.call.getCloserName().equals("null")) {
                       if (!holder.call.getCloserNameId().equals(holder.call.getIdName())) {
                               holder.important.setVisibility(View.GONE);
                               holder.closerLids.setVisibility(View.GONE);
                               holder.removeButton.setVisibility(View.GONE);
                       /* LinearLayout.LayoutParams noImp = new LinearLayout.LayoutParams(0, 0);
                        holder.important.setLayoutParams(noImp);*/
                       }
                       String[] mass_Date = holder.call.getCloserDate().split(" ");
                       String date = "";
                       SimpleDateFormat sdf;
                       Date testDate = null;
                       Date dateNow = null;
                       CharSequence day = "";
 
                       Date rezult = null;
                       date = mass_Date[0];
 
                       sdf = new SimpleDateFormat("dd.MM.yyyy");
                       GregorianCalendar calendar = new GregorianCalendar();
                       Date hireDay = calendar.getTime();
                       try {
                               dateNow = new Date();
 
                               day = DateFormat.format("dd.MM.yyyy", dateNow.getTime());
 
                               testDate = sdf.parse(date);
                               rezult = sdf.parse(day.toString());
                               if (daysBetween(rezult, testDate) == 0) {
 
 
                                       rezultDate = "Сегодня";
 
                               } else if (daysBetween(rezult, testDate) == 1) {
                                       rezultDate = "Вчера";
 
                               } else if (daysBetween(rezult, testDate) <= 7) {
                                       textday = DateFormat.format("EEEE", testDate.getTime());
                                       tempChar[0] = textday.toString().charAt(0);
                                       String tempString = new String(tempChar);
                                       String rezultString = tempString.toUpperCase();
                                       sb = new StringBuffer(textday);
                                       sb.setCharAt(0, rezultString.charAt(0));
                                       rezultDate = sb.toString();
                               } else {
                                       textday = DateFormat.format("dd MMMM", testDate.getTime());
                                       tempChar[0] = textday.toString().charAt(3);
                                       String tempString = new String(tempChar);
                                       String rezultString = tempString.toUpperCase();
                                       sb = new StringBuffer(textday);
                                       sb.setCharAt(3, rezultString.charAt(0));
                                       rezultDate = sb.toString();
 
 
                               }
                               holder.bid.setText(holder.call.getCloserName() + " - " +rezultDate + " " + mass_Date[1]);
                               holder.bid2.setText(holder.call.getCloserName() + " - " + rezultDate + " " + mass_Date[1]);
 
 
                       } catch (Exception ex) {
                               ex.printStackTrace();
                       }
 
                       holder.linerFix.addView(holder.linerSeparator);
                       holder.linerFix.addView(holder.bid);
                       if (holder.call.getCloserMessage().equals("null")) {
                               holder.linerSlideFix.addView(holder.linerSeparator2);
                               holder.linerSlideFix.addView(holder.bid2);
                       } else {
                               holder.closerMessage.setText(holder.call.getCloserMessage());
                               holder.linerSlideFix.addView(holder.closerMessage);
                               holder.linerSlideFix.addView(holder.linerSeparator2);
                               holder.linerSlideFix.addView(holder.bid2);
                               holder.important.setVisibility(View.GONE);
                       }
               }
 
         
 
        }
0
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 133
11.10.2016, 12:57  [ТС] 12
сейчас
0
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 133
11.10.2016, 12:58  [ТС] 13
vxg, продолжение, говорил же большой
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
   if (holder.call.getChannelCall() == 0) {
                   if (holder.call.getCloserMessage().equals("null") && !holder.call.getCloserNameId().equals(holder.call.getIdName())) {
                    ///   row.setBackgroundResource(R.drawable.listcell);
                     //  row.setSelected(true);
 
                       row.setBackgroundColor(Color.argb(255, 247, 253, 200)); //помоеченный желтый
                  //    holder.slideCalls.setBackgroundResource(R.drawable.listcell);
                     //  holder.slideCalls.setSelected(true);
                       } else if (holder.call.getCloserNameId().equals(holder.call.getIdName()) && holder.call.getCloserMessage().equals("null")) {
                               holder.important.setImageResource(R.drawable.ic_star_black);
                               holder.closerLids.setVisibility(View.VISIBLE);
                               holder.removeButton.setVisibility(View.VISIBLE);
                              // holder.slideCalls.setBackgroundColor(Color.argb(255, 247, 253, 200));
                       if(holder.call.getTypeQuery().equals("3"))
                       {
                           holder.rl.setVisibility(View.VISIBLE);
                           holder.linerFix.setVisibility(View.GONE);
                       }
 
                        //   row.setBackgroundColor(Color.argb(255, 239, 245, 251));
                       row.setBackgroundColor(Color.argb(255, 247, 253, 200)); //мой помеченный
                     //  holder.slideCalls.setBackgroundColor(Color.argb(255, 247, 253, 200));
                       }
 
                       if(holder.call.getCloserNameId().equals("null"))
                   {
                       row.setBackgroundColor(Color.argb(255, 251,227, 228));
                     //  holder.slideCalls.setBackgroundColor(Color.argb(255, 251,227, 228));
                       holder.important.setImageResource(R.drawable.ic_star_white);
                       holder.closerLids.setVisibility(View.GONE);
                       holder.removeButton.setVisibility(View.GONE);
                       if(holder.call.getTypeQuery().equals("3"))
                       {
                           holder.rl.setVisibility(View.VISIBLE);
                           holder.linerFix.setVisibility(View.GONE);
                       }
 
                   }
 
               }
               else if(holder.call.getChannelCall() == 1)
               {
                   if (holder.call.getCloserMessage().equals("null") && !holder.call.getCloserNameId().equals(holder.call.getIdName())) {
 
                       row.setBackgroundColor(Color.argb(255, 247, 253, 200)); //помоеченный желтый
                   } else if (holder.call.getCloserNameId().equals(holder.call.getIdName()) && holder.call.getCloserMessage().equals("null")) {
                       holder.important.setImageResource(R.drawable.ic_star_black);
                       holder.closerLids.setVisibility(View.VISIBLE);
                       holder.removeButton.setVisibility(View.VISIBLE);
                       //   row.setBackgroundColor(Color.argb(255, 239, 245, 251));
                       row.setBackgroundColor(Color.argb(255, 247, 253, 200)); //мой помеченный
                       if(holder.call.getTypeQuery().equals("3"))
                       {
                           holder.rl.setVisibility(View.VISIBLE);
                           holder.linerFix.setVisibility(View.GONE);
                       }
                   }
                   else {
                       holder.removeButton.setVisibility(View.VISIBLE);
                       holder.important.setVisibility(View.GONE);
                       holder.closerLids.setVisibility(View.GONE);
             /*   LinearLayout.LayoutParams noImp = new LinearLayout.LayoutParams(0, 0);
                holder.important.setLayoutParams(noImp);*/
                       row.setBackgroundColor(Color.argb(255, 223, 223, 223));
                   }
 
                   if(holder.call.getCloserNameId().equals("null"))
                   {
                       row.setBackgroundColor(Color.argb(255, 251,227, 228));
                       holder.important.setImageResource(R.drawable.ic_star_white);
                       holder.closerLids.setVisibility(View.GONE);
                       holder.removeButton.setVisibility(View.GONE);
                       if(holder.call.getTypeQuery().equals("3"))
                       {
                           holder.rl.setVisibility(View.VISIBLE);
                           holder.linerFix.setVisibility(View.GONE);
                       }
 
                   }
               }
 
              else if (holder.call.getChannelCall() == 2) {
                       //   if(holder.call.)
                       if (holder.call.getCloserNameId().equals("null") && holder.call.getCloserMessage().equals("null")) {
                           row.setBackgroundColor(Color.argb(255, 251,227, 228));
                              // row.setBackgroundColor(Color.argb(255, 239, 245, 251)); //откртые
                       } else if (holder.call.getCloserMessage().equals("null") && !holder.call.getCloserNameId().equals(holder.call.getIdName())) {
                               row.setBackgroundColor(Color.argb(255, 247, 253, 200)); //помоеченный желтый
                       } else if (holder.call.getCloserNameId().equals(holder.call.getIdName()) && holder.call.getCloserMessage().equals("null")) {
                               row.setBackgroundColor(Color.argb(255, 247, 253, 200)); //мой помеченный
                           holder.important.setImageResource(R.drawable.ic_star_black);
                               holder.closerLids.setVisibility(View.VISIBLE);
                               holder.removeButton.setVisibility(View.VISIBLE);
                           if(holder.call.getTypeQuery().equals("3"))
                           {
                               holder.rl.setVisibility(View.VISIBLE);
                               holder.linerFix.setVisibility(View.GONE);
                           }
                       } else if (!holder.call.getCloserMessage().equals("null") && !holder.call.getCloserNameId().equals("null")) {
                               //  row.setBackgroundColor(Color.argb(255,239,245,251));
                               row.setBackgroundColor(Color.argb(255,223,240,216)); //закртые удаленные
                       }
                   if(holder.call.getCloserNameId().equals("null"))
                   {
                       row.setBackgroundColor(Color.argb(255, 251,227, 228));
                       holder.important.setImageResource(R.drawable.ic_star_white);
                       holder.closerLids.setVisibility(View.GONE);
                       holder.removeButton.setVisibility(View.GONE);
                       if(holder.call.getTypeQuery().equals("3"))
                       {
                           holder.rl.setVisibility(View.VISIBLE);
                           holder.linerFix.setVisibility(View.GONE);
                       }
                   }
 
               } else if (holder.call.getChannelCall() == 3) {
                       if (holder.call.getCloserNameId().equals(holder.call.getIdName()) && holder.call.getCloserMessage().equals("null")) {
                               // row.setBackgroundColor(Color.argb(255,223,240,216)); //мой помеченный
                               if (!holder.call.getCloserMessage().equals("null")) {
                                       holder.important.setVisibility(View.GONE);
                                       holder.removeButton.setVisibility(View.VISIBLE);
 
                               } else {
                                   holder.important.setImageResource(R.drawable.ic_star_black);
                                       holder.closerLids.setVisibility(View.VISIBLE);
                                       holder.removeButton.setVisibility(View.VISIBLE);
                                   if(holder.call.getTypeQuery().equals("3"))
                                   {
                                       holder.rl.setVisibility(View.VISIBLE);
                                       holder.linerFix.setVisibility(View.GONE);
                                   }
                               }
                       } else {
                               if (!holder.call.getCloserMessage().equals("null")) {
                                       holder.important.setVisibility(View.GONE);
                                       holder.removeButton.setVisibility(View.VISIBLE);
                               } else {
                                   holder.important.setImageResource(R.drawable.ic_star_white);
                                       holder.closerLids.setVisibility(View.GONE);
                                       holder.removeButton.setVisibility(View.VISIBLE);
                                   if(holder.call.getTypeQuery().equals("3"))
                                   {
                                       holder.rl.setVisibility(View.VISIBLE);
                                       holder.linerFix.setVisibility(View.GONE);
                                   }
                               }
 
                       }
                   row.setBackgroundColor(Color.argb(255, 247, 253, 200)); //помоеченный желтый
               } else if (holder.call.getChannelCall() == 4) {
 
                       holder.removeButton.setVisibility(View.VISIBLE);
                       holder.important.setVisibility(View.GONE);
                       holder.closerLids.setVisibility(View.GONE);
 
                       row.setBackgroundColor(Color.argb(255,223,240,216));
               } else if (holder.call.getChannelCall() == 5) {
 
                       holder.removeButton.setVisibility(View.VISIBLE);
                       holder.important.setVisibility(View.GONE);
                       holder.closerLids.setVisibility(View.GONE);
                       holder.removeButton.setVisibility(View.GONE);
 
                       row.setBackgroundColor(Color.argb(255,223,240,216));
               }
 
               row.setTag(holder);
 
 
               setupItem(holder);
             // row.setLayoutParams(new ListView.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
               return row;
 
        }
 
 
        public static long daysBetween(Date startDate, Date endDate) {
                //  int difference=
                return     ((int)((startDate.getTime()/(24*60*60*1000))
                        -(int)(endDate.getTime()/(24*60*60*1000))));
        }
0
Модератор
3387 / 2159 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
11.10.2016, 13:31 14
TonyBicbaev, ваш адаптер не переиспользует view, но не это приводит к тому эффекту что вы наблюдаете - в адаптере как я понял тоже могут быть назначены цвета и вот вы назначаете их за пределами адаптера еще раз... скролите список - адаптер прибивает старое view и воссоздает новое окрашенное по законам данных
0
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 133
12.10.2016, 04:36  [ТС] 15
vxg, да я понимаю что тут все норм. Но мне надо динамически по клику менять цвет(и при повторном нажатие вернуть прошлый). Не просто нажал, а прям поменять.
Получилось вчера сделать добавив onClickItemListener как минимум 6 условий.(может это правильно, а можете и нет)
Просто хотел найти правильно решение.
0
Модератор
3387 / 2159 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
12.10.2016, 06:06 16
TonyBicbaev, правильное решение написано выше - при клике меняйте статус по которому окрашивается элемент и одновременно меняйте цвет как вы делаете либо уведомляйте адаптер об изменении данных - тогда и вы и адаптер будете согласованы по цветам
0
12.10.2016, 06:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.10.2016, 06:06
Помогаю со студенческими работами здесь

EditText в одном из Item ListView
Помогите решить довольно нестандартную задачу. У меня есть ListView, есть Adapter который делает...

ListView. Задать высотку Item-а
Посмотрите этот пример(очень простой) - http://freehabr.ru/blog/android/2022.html Как там изменить...

Custom ListView item setColor
Всех С Новым Годом! Начал изучать разработку под Android на IDE Android Studio. Создал TabHost с...

Ошибка при выборе Item в ListView
Здравствуйте уважаемые форумчане. Не могу определить где ошибся. У меня есть ListView где...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru