Адаптер Java RecyclerView неправильно раскрашивает 14-й элемент, независимо от значений переменных ⇐ Android
Адаптер Java RecyclerView неправильно раскрашивает 14-й элемент, независимо от значений переменных
У меня есть таблица лидеров, в которой ваше имя окрашивается в зависимости от вашего ранга. На каждые потраченные 10 евро — новый цвет. Последний ранг — градиентный цвет. Раскрашивает все как надо, кроме 14-го пункта (позиция 13). Это дает ему градиентный цвет независимо от ранга, имени, количества предметов или чего-либо еще. Вот мой адаптер:
пакет com.miskolin.app; импортировать android.content.Context; импортировать android.graphics.Color; импортировать android.graphics.LinearGradient; импортировать android.graphics.Shader; импортировать android.graphics.Typeface; импортировать android.text.TextPaint; импортировать android.util.Log; импортировать android.view.LayoutInflater; импортировать android.view.ViewGroup; импортировать android.widget.TextView; импортировать androidx.annotation.NonNull; импортировать androidx.recyclerview.widget.RecyclerView; импортировать org.w3c.dom.Text; импортировать java.util.List; публичный класс MyAdapter расширяет RecyclerView.Adapter { Контекстный контекст; Список элементов ; public MyAdapter (Контекст контекста, элементы List) { this.context = контекст; this.items = предметы; } @NonNull @Override public MyViewHolder onCreateViewHolder(@NonNull ViewGroup родительский, int viewType) { вернуть новый MyViewHolder(LayoutInflater.from(context).inflate(R.layout.item_view,parent,false)); } @Override public void onBindViewHolder(@NonNull MyViewHolder Holder, int Position) { Holder.user.setText(items.get(position).getUser()); Holder.total.setText(items.get(position).getTotalSpent()); Целочисленный ранг = items.get(position).getLeadersRank(); int[][] RankColors = { { context.getResources().getColor(R.color.Rank0), // Ранг 0 context.getResources().getColor(R.color.Rank1), // Ранг 1 context.getResources().getColor(R.color.Rank2), // Ранг 2 context.getResources().getColor(R.color.Rank3), // Ранг 3 context.getResources().getColor(R.color.Rank4), // Ранг 4 context.getResources().getColor(R.color.Rank5), // Ранг 5 context.getResources().getColor(R.color.Rank6), // Ранг 6 context.getResources().getColor(R.color.Rank7) , // Ранг 7 context.getResources().getColor(R.color.Rank8) // Ранг 8 }, { context.getResources().getColor(R.color.Rank9c1), context.getResources().getColor(R.color.Rank9c2), context.getResources().getColor(R.color.Rank9c3) } }; if (rank >= RankColors[0].length) { Log.d("Отладка", "Использование LinearGradient для элемента в позиции " + позиция); TextPaint краска = Holder.user.getPaint(); Шейдер шейдер = новый LinearGradient(0, 100, 3, 20, RankColors[1], null, Shader.TileMode.CLAMP); Paint.setShader(шейдер); Holder.user.setTextColor(rankColors[0][0]); } еще { for (int i = 0; i
У меня есть таблица лидеров, в которой ваше имя окрашивается в зависимости от вашего ранга. На каждые потраченные 10 евро — новый цвет. Последний ранг — градиентный цвет. Раскрашивает все как надо, кроме 14-го пункта (позиция 13). Это дает ему градиентный цвет независимо от ранга, имени, количества предметов или чего-либо еще. Вот мой адаптер:
пакет com.miskolin.app; импортировать android.content.Context; импортировать android.graphics.Color; импортировать android.graphics.LinearGradient; импортировать android.graphics.Shader; импортировать android.graphics.Typeface; импортировать android.text.TextPaint; импортировать android.util.Log; импортировать android.view.LayoutInflater; импортировать android.view.ViewGroup; импортировать android.widget.TextView; импортировать androidx.annotation.NonNull; импортировать androidx.recyclerview.widget.RecyclerView; импортировать org.w3c.dom.Text; импортировать java.util.List; публичный класс MyAdapter расширяет RecyclerView.Adapter { Контекстный контекст; Список элементов ; public MyAdapter (Контекст контекста, элементы List) { this.context = контекст; this.items = предметы; } @NonNull @Override public MyViewHolder onCreateViewHolder(@NonNull ViewGroup родительский, int viewType) { вернуть новый MyViewHolder(LayoutInflater.from(context).inflate(R.layout.item_view,parent,false)); } @Override public void onBindViewHolder(@NonNull MyViewHolder Holder, int Position) { Holder.user.setText(items.get(position).getUser()); Holder.total.setText(items.get(position).getTotalSpent()); Целочисленный ранг = items.get(position).getLeadersRank(); int[][] RankColors = { { context.getResources().getColor(R.color.Rank0), // Ранг 0 context.getResources().getColor(R.color.Rank1), // Ранг 1 context.getResources().getColor(R.color.Rank2), // Ранг 2 context.getResources().getColor(R.color.Rank3), // Ранг 3 context.getResources().getColor(R.color.Rank4), // Ранг 4 context.getResources().getColor(R.color.Rank5), // Ранг 5 context.getResources().getColor(R.color.Rank6), // Ранг 6 context.getResources().getColor(R.color.Rank7) , // Ранг 7 context.getResources().getColor(R.color.Rank8) // Ранг 8 }, { context.getResources().getColor(R.color.Rank9c1), context.getResources().getColor(R.color.Rank9c2), context.getResources().getColor(R.color.Rank9c3) } }; if (rank >= RankColors[0].length) { Log.d("Отладка", "Использование LinearGradient для элемента в позиции " + позиция); TextPaint краска = Holder.user.getPaint(); Шейдер шейдер = новый LinearGradient(0, 100, 3, 20, RankColors[1], null, Shader.TileMode.CLAMP); Paint.setShader(шейдер); Holder.user.setTextColor(rankColors[0][0]); } еще { for (int i = 0; i
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Мое приложение для Android не распознает мой адаптер. Адаптер не подключен, пропуск макета
Anonymous » » в форуме JAVA - 0 Ответы
- 28 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Мое приложение для Android не распознает мой адаптер. Адаптер не подключен, пропуск макета
Anonymous » » в форуме JAVA - 0 Ответы
- 23 Просмотры
-
Последнее сообщение Anonymous
-