Редактировать элемент по позиции в списке - PullRequest
0 голосов
/ 06 февраля 2019

Привет, я новый разработчик Android.Я пытаюсь изменить какой-то элемент в своем элементе один раз при клике, это мой код

ListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                ImageView img = findViewById(R.id.imageView2);
                img.setImageResource(R.drawable.validate);
                TextView txtNumTicket, txtCaisse;
                txtNumTicket = findViewById(R.id.ref);
                txtCaisse = findViewById(R.id.textView);
                txtNumTicket.setTextColor(ContextCompat.getColor(Commande.this, R.color.bon));
                txtCaisse.setTextColor(ContextCompat.getColor(Commande.this, R.color.bon));
                Toast.makeText(getApplicationContext(), "You have selected item no."
                        + (i + 1) + "", Toast.LENGTH_SHORT).show();

            }
        });

Я хочу вернуться в исходное состояние (изменить изображение на R.id.novalidate и color textview), когда позиция равна 6Как я могу это сделать?

1 Ответ

0 голосов
/ 06 февраля 2019

ОБНОВЛЕНО после комментария:

if (yourListView.getAdapter().getCount()  == 6) {
    img.setImageResource(R.drawable.novalidate);
    txtNumTicket.setTextColor(ContextCompat.getColor(Commande.this, R.color.your_new_colour));
    txtCaisse.setTextColor(ContextCompat.getColor(Commande.this, R.color.your_new_colour));
}

2ndUPDATE: На основании этого ответа , вот как вы можете получить представление в определенной позиции вашего списка

public View getViewByPosition(int pos, ListView listView) {
    final int firstListItemPosition = listView.getFirstVisiblePosition();
    final int lastListItemPosition = firstListItemPosition + listView.getChildCount() - 1;

    if (pos < firstListItemPosition || pos > lastListItemPosition ) {
        return listView.getAdapter().getView(pos, null, listView);
    } else {
        final int childIndex = pos - firstListItemPosition;
        return listView.getChildAt(childIndex);
    }
}

Таким образом, вы можете получить желаемый вид, вызвав:

View view = getViewByPosition (number_of_the_view_you_want_to_change, name_of_your_listview);

Затем свяжите textviews / imageviews этого элемента (view.findViewById (...)) и установите цвета и текст, как описано выше

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