Поэтому я разработал простое приложение для своего отца, чтобы управлять его футбольной командой. На главном экране отображается ListView с именем игрока, значок, указывающий его день рождения в указанном месяце, и другой значок, указывающий, заплатил ли игрок за использование поля в этом месяце.
В моем коде некоторые ImageView предназначены для просмотра. изменить цвет или ресурсы Drawable в соответствии с некоторыми действиями, например, если игрок заплатил свою плату в этом месяце, платеж ImageView станет зеленым и изменится на другой ресурс Drawable.
Что происходит с ListView, так это когда Достаточно элементов для прокрутки по вертикали, некоторые из ImageViews меняют свои свойства. Как цвет или видимость.
XML:
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/llMonth">
<ListView
android:id="@+id/lvPlayers"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/btAddPlayer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
android:layout_margin="16dp"
android:clickable="true"
android:src="@drawable/add_white"
app:fabSize="normal"
app:layout_anchor="@id/lvPlayers"
app:layout_anchorGravity="bottom|right|end" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
JAVA:
public View getView(int position, View convertView, ViewGroup parent){
Player player = getItem(position);
if (convertView == null)
convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_player, parent, false);
Context mContext = convertView.getContext();
TextView tvPlayerId = convertView.findViewById(R.id.tvPlayerId);
TextView tvPlayerName = convertView.findViewById(R.id.tvPlayerName);
ImageView ivBirthday = convertView.findViewById(R.id.ivPlayerBirthday);
ImageView ivPayment = convertView.findViewById(R.id.ivPlayerPayment);
assert player != null;
tvPlayerId .setText(player.id);
tvPlayerName.setText(player.playerName);
String todayMonthYear = formatDateMonth(new Date());
if (player.dob.split(" ")[1].equals(todayMonthYear.split(" ")[0])) {
ivBirthday.setVisibility(View.VISIBLE);
}
if (!player.active.equals(getContext().getResources().getString(R.string.active))) {
tvPlayerName.setBackgroundColor(getContext().getColor(R.color.colorRed));
tvPlayerName.setTextColor(getContext().getColor(R.color.colorDefaultBG));
ivPayment.setVisibility(View.INVISIBLE);
} else {
if (checkPayment(mContext, Integer.parseInt(player.id), todayMonthYear)) {
ivPayment.setImageDrawable(ResourcesCompat.getDrawable(convertView.getResources(), R.drawable.money, null));
ivPayment.setColorFilter (ResourcesCompat.getColor (convertView.getResources(), R.color.colorGreen, null));
}
}
return convertView;
}
Я искал везде и не мог найти ответ на это кроме переключения на RecyclerView.