首页 > 解决方案 > RelativeLayout 无法转换为 TextView

问题描述

I have an error in which when a checkbox/row in the listview is selected, it points out to errorandroid.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 相对布局。

<?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>

我似乎无法正常工作,我不知道这是如何工作的。

标签: javaandroidandroid-relativelayout

解决方案


Nilesh Rathod在这里给出的答案对您有用,但它是您问题的短期解决方案。

每当您将 an 添加OnItemClickListener到 aListView时,该函数将始终为您提供根视图/父视图。如果你添加更多的东西,比如EditText里面的a 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功能,然后再对其进行操作。


推荐阅读