Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
TonyBicbaev
3 / 3 / 1
Регистрация: 04.11.2013
Сообщений: 133
#1

Изменить цвет у item-a в listView - Программирование Android

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

Привет, вопрос такой.
Задача такая:
Допустим у меня есть элементы listview разноцветные: (мне нужно при нажатие что бы он стал белым(элемент), и когда нажму на него еще раз принял свой цвет обратно.)
1. То есть прям перекрасить элемент в белый цвет. (В чем проблема :
http://www.cyberforum.ru/android-dev/thread2142208.html
я делал так :
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2016, 08:12
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Изменить цвет у item-a в listView (Программирование Android):

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

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

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

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

ListView. Задать высотку Item-а
Посмотрите этот пример(очень простой) -...

15
Mikalai
262 / 238 / 95
Регистрация: 11.01.2015
Сообщений: 666
11.10.2016, 09:56 #2
Добавь поле в элемент массива(или коллекции), которую отображаешь в листе, хранящее значение цвета элемента. Или boolean храни - выделен элемент/не выделен.
0
TonyBicbaev
3 / 3 / 1
Регистрация: 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
vxg
Модератор
3229 / 2032 / 319
Регистрация: 13.01.2012
Сообщений: 7,884
11.10.2016, 10:19 #4
TonyBicbaev, ничем хорошим игра с цветами не из адаптера не кончится - если вы начнете скролить лист у вас все цвета перемешает так как адаптер имеет свое мнение по поводу того как их красить. красьте их через установления некого поля в массиве данных отображаемых в лист - саму окраску реализуйте в адаптере
0
TonyBicbaev
3 / 3 / 1
Регистрация: 04.11.2013
Сообщений: 133
11.10.2016, 10:28  [ТС] #5
vxg, я понимаю, я так и делал вот сообщение пред вами это все с адаптера,
задаю
Java
1
 row.setBackgroundResource(R.drawable.listcell); // вот с адаптера  но даже  setSelect не работает
0
vxg
Модератор
3229 / 2032 / 319
Регистрация: 13.01.2012
Сообщений: 7,884
11.10.2016, 11:45 #6
TonyBicbaev, адаптера в вашем коде нет
0
TonyBicbaev
3 / 3 / 1
Регистрация: 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
vxg
Модератор
3229 / 2032 / 319
Регистрация: 13.01.2012
Сообщений: 7,884
11.10.2016, 12:16 #8
TonyBicbaev, это не адаптер, это холдер элемента. просто может быть такая ситуация. есть адаптер. он генерирует или переиспользует view назначая тексты и цвета в соответствии с данными отображаемыми в list. этот же адаптер при генерации view заполняет холдер. по идее холдер не должен содержать ничего кроме ссылок на содержимое элемента для быстрого доступа к ним. за само содержимое и цвет отвечает не холдер, а адаптер. вы хватаете холдер, выковыриваете из него ссылки на содержимое и манипулируете с ним не затрагивая отображаемые в list данные. если вдруг адаптер проснется и переиспользует view над которой вы так поработали он может назначить содержимому другой текст или цвет или еще лучше - перемешать их с тем что есть (если вы то так делали то так)
0
TonyBicbaev
3 / 3 / 1
Регистрация: 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
vxg
Модератор
3229 / 2032 / 319
Регистрация: 13.01.2012
Сообщений: 7,884
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
TonyBicbaev
3 / 3 / 1
Регистрация: 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
TonyBicbaev
3 / 3 / 1
Регистрация: 04.11.2013
Сообщений: 133
11.10.2016, 12:57  [ТС] #12
сейчас
0
TonyBicbaev
3 / 3 / 1
Регистрация: 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
vxg
Модератор
3229 / 2032 / 319
Регистрация: 13.01.2012
Сообщений: 7,884
11.10.2016, 13:31 #14
TonyBicbaev, ваш адаптер не переиспользует view, но не это приводит к тому эффекту что вы наблюдаете - в адаптере как я понял тоже могут быть назначены цвета и вот вы назначаете их за пределами адаптера еще раз... скролите список - адаптер прибивает старое view и воссоздает новое окрашенное по законам данных
0
TonyBicbaev
3 / 3 / 1
Регистрация: 04.11.2013
Сообщений: 133
12.10.2016, 04:36  [ТС] #15
vxg, да я понимаю что тут все норм. Но мне надо динамически по клику менять цвет(и при повторном нажатие вернуть прошлый). Не просто нажал, а прям поменять.
Получилось вчера сделать добавив onClickItemListener как минимум 6 условий.(может это правильно, а можете и нет)
Просто хотел найти правильно решение.
0
vxg
Модератор
3229 / 2032 / 319
Регистрация: 13.01.2012
Сообщений: 7,884
12.10.2016, 06:06 #16
TonyBicbaev, правильное решение написано выше - при клике меняйте статус по которому окрашивается элемент и одновременно меняйте цвет как вы делаете либо уведомляйте адаптер об изменении данных - тогда и вы и адаптер будете согласованы по цветам
0
12.10.2016, 06:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.10.2016, 06:06
Привет! Вот еще темы с решениями:

ListView кнопка добавить item в избранное
Здравствуйте форумчане, не нашел в инете подобный вопрос, может неправильно...

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

Убрать все виды выделений с item в ListView
Использую android:cacheColorHint=&quot;@android:color/transparent&quot;, но не помогает....

В listView в item отображать картинки одинакового размера
загружаю картинки с сервера, они разных размеров. Скажите как в listView в...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru