RelativeLayout не может быть приведен к TextView - PullRequest
0 голосов
/ 04 июня 2019

У меня ошибка, из-за которой при выборе флажка / строки в представлении списка указывается ошибка android.widget.RelativeLayout cannot be cast to android.widget.TextView.

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            String selectedBet = ((TextView)view).getText().toString();
            if (selectedBets.contains(selectedBet)){
                selectedBets.remove(selectedBet); //uncheck
            }else{
                selectedBets.add(selectedBet);
            }
        }
    });

Кроме того, вот мой XML Relativelayout.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="75dp">

    <CheckedTextView
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:gravity="center_vertical"
        android:checkMark="?android:attr/listChoiceIndicatorMultiple"
        android:padding="5dp"
        android:id="@+id/checkmark" />
</RelativeLayout>

Мне не кажется, что это работает, я понятия не имею, как это работает.

Ответы [ 2 ]

1 голос
/ 04 июня 2019

Ответ, данный Nilesh Rathod здесь , будет работать для вас, но это будет краткосрочным решением вашей проблемы.

Всякий раз, когда вы добавляете OnItemClickListener к ListView, функция всегда будет предоставлять вам корневой вид / родительский вид. Если вы добавите больше материала, например EditText внутри RelativeLayout, вам нужно будет найти его следующим образом:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        TextView textView = view.findViewById(R.id.textViewId);
        EditText editText = view.findViewById(R.id.editTextId);
        String selectedBet = textView.getText().toString();
    }
});

Вам нужно найти конкретный View из макета контейнера, который вы получите из функции onItemClick, а затем поработать с ним.

0 голосов
/ 04 июня 2019

Вы получаете родительский макет, который является относительным макетом в вашем случае.Вы должны получить CheckedTextView, используя его идентификатор.

...