ImageView изменяет свойства при прокрутке ListView - PullRequest
0 голосов
/ 27 марта 2020

Поэтому я разработал простое приложение для своего отца, чтобы управлять его футбольной командой. На главном экране отображается 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...