Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
TonyBicbaev
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 124
#1

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

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

Привет, вопрос такой.
Задача такая:
Допустим у меня есть элементы 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); //передал белый.
Когда нажимаю второй раз передал запомненный цвет обратно.
Но когда например нажимаю на другие элементы(не вернув цвет первому), начинает путаница происходить, цвета начинаю мешаться.
Есть какие-нибуть варианты?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2016, 08:12     Изменить цвет у item-a в listView
Посмотрите здесь:

Android Сдвиг item в ListView не до конца, а под ним кнопка
Android ListView: передача данных в item
EditText в одном из Item ListView Android
Убрать все виды выделений с item в ListView Android
Ошибка при выборе Item в ListView Android
В listView в item отображать картинки одинакового размера Android
Android Как изменить цвет пункта ListView при нажатии на него и сохранять его цвет при проматывании списка?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mikalai
254 / 230 / 93
Регистрация: 11.01.2015
Сообщений: 649
11.10.2016, 09:56     Изменить цвет у item-a в listView #2
Добавь поле в элемент массива(или коллекции), которую отображаешь в листе, хранящее значение цвета элемента. Или boolean храни - выделен элемент/не выделен.
TonyBicbaev
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 124
11.10.2016, 09:57  [ТС]     Изменить цвет у item-a в listView #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);
               
                }
 
 
            }
        });
цвет остается желтым((
vxg
Модератор
3023 / 1825 / 190
Регистрация: 13.01.2012
Сообщений: 6,922
11.10.2016, 10:19     Изменить цвет у item-a в listView #4
TonyBicbaev, ничем хорошим игра с цветами не из адаптера не кончится - если вы начнете скролить лист у вас все цвета перемешает так как адаптер имеет свое мнение по поводу того как их красить. красьте их через установления некого поля в массиве данных отображаемых в лист - саму окраску реализуйте в адаптере
TonyBicbaev
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 124
11.10.2016, 10:28  [ТС]     Изменить цвет у item-a в listView #5
vxg, я понимаю, я так и делал вот сообщение пред вами это все с адаптера,
задаю
Java
1
 row.setBackgroundResource(R.drawable.listcell); // вот с адаптера  но даже  setSelect не работает
vxg
Модератор
3023 / 1825 / 190
Регистрация: 13.01.2012
Сообщений: 6,922
11.10.2016, 11:45     Изменить цвет у item-a в listView #6
TonyBicbaev, адаптера в вашем коде нет
TonyBicbaev
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 124
11.10.2016, 11:57  [ТС]     Изменить цвет у item-a в listView #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 элементов.
vxg
Модератор
3023 / 1825 / 190
Регистрация: 13.01.2012
Сообщений: 6,922
11.10.2016, 12:16     Изменить цвет у item-a в listView #8
TonyBicbaev, это не адаптер, это холдер элемента. просто может быть такая ситуация. есть адаптер. он генерирует или переиспользует view назначая тексты и цвета в соответствии с данными отображаемыми в list. этот же адаптер при генерации view заполняет холдер. по идее холдер не должен содержать ничего кроме ссылок на содержимое элемента для быстрого доступа к ним. за само содержимое и цвет отвечает не холдер, а адаптер. вы хватаете холдер, выковыриваете из него ссылки на содержимое и манипулируете с ним не затрагивая отображаемые в list данные. если вдруг адаптер проснется и переиспользует view над которой вы так поработали он может назначить содержимому другой текст или цвет или еще лучше - перемешать их с тем что есть (если вы то так делали то так)
TonyBicbaev
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 124
11.10.2016, 12:25  [ТС]     Изменить цвет у item-a в listView #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;
}
vxg
Модератор
3023 / 1825 / 190
Регистрация: 13.01.2012
Сообщений: 6,922
11.10.2016, 12:38     Изменить цвет у item-a в listView #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;
    }
}
TonyBicbaev
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 124
11.10.2016, 12:55  [ТС]     Изменить цвет у item-a в listView #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);
                       }
               }
 
         
 
        }
TonyBicbaev
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 124
11.10.2016, 12:57  [ТС]     Изменить цвет у item-a в listView #12
сейчас
TonyBicbaev
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 124
11.10.2016, 12:58  [ТС]     Изменить цвет у item-a в listView #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))));
        }
vxg
Модератор
3023 / 1825 / 190
Регистрация: 13.01.2012
Сообщений: 6,922
11.10.2016, 13:31     Изменить цвет у item-a в listView #14
TonyBicbaev, ваш адаптер не переиспользует view, но не это приводит к тому эффекту что вы наблюдаете - в адаптере как я понял тоже могут быть назначены цвета и вот вы назначаете их за пределами адаптера еще раз... скролите список - адаптер прибивает старое view и воссоздает новое окрашенное по законам данных
TonyBicbaev
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 124
12.10.2016, 04:36  [ТС]     Изменить цвет у item-a в listView #15
vxg, да я понимаю что тут все норм. Но мне надо динамически по клику менять цвет(и при повторном нажатие вернуть прошлый). Не просто нажал, а прям поменять.
Получилось вчера сделать добавив onClickItemListener как минимум 6 условий.(может это правильно, а можете и нет)
Просто хотел найти правильно решение.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.10.2016, 06:06     Изменить цвет у item-a в listView
Еще ссылки по теме:

ListView. Задать высотку Item-а Android
Custom ListView item setColor Android
Как изменять item listview не перерисовывая весь список? Android
ListView кнопка добавить item в избранное Android
Изменить Title item menu Android

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

Или воспользуйтесь поиском по форуму:
vxg
Модератор
3023 / 1825 / 190
Регистрация: 13.01.2012
Сообщений: 6,922
12.10.2016, 06:06     Изменить цвет у item-a в listView #16
TonyBicbaev, правильное решение написано выше - при клике меняйте статус по которому окрашивается элемент и одновременно меняйте цвет как вы делаете либо уведомляйте адаптер об изменении данных - тогда и вы и адаптер будете согласованы по цветам
Yandex
Объявления
12.10.2016, 06:06     Изменить цвет у item-a в listView
Ответ Создать тему
Опции темы

Текущее время: 08:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru