RelativeLayout 无法转换为 TextView
RelativeLayout cannot cast to TextView
我有一个错误,当列表视图中的 checkbox/row 被选中时,它指出了错误 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 相对布局。
<?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>
我似乎无法正常工作,我不知道它是如何工作的。
您获得的父布局在您的案例中是相对布局。您必须使用它的 ID 获取 CheckedTextView。
Nilesh Rathod here 给出的答案对您有用,但它是解决您问题的短期方法。
每当您将 OnItemClickListener
添加到 ListView
时,该函数将始终为您提供根 view/parent 视图。如果你添加更多的东西,比如 RelativeLayout
里面的 EditText
,你必须按如下方式找到它:
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();
}
});
您必须从 onItemClick
函数获得的容器布局中找到特定的 View
,然后对其进行操作。
我有一个错误,当列表视图中的 checkbox/row 被选中时,它指出了错误 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 相对布局。
<?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>
我似乎无法正常工作,我不知道它是如何工作的。
您获得的父布局在您的案例中是相对布局。您必须使用它的 ID 获取 CheckedTextView。
Nilesh Rathod here 给出的答案对您有用,但它是解决您问题的短期方法。
每当您将 OnItemClickListener
添加到 ListView
时,该函数将始终为您提供根 view/parent 视图。如果你添加更多的东西,比如 RelativeLayout
里面的 EditText
,你必须按如下方式找到它:
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();
}
});
您必须从 onItemClick
函数获得的容器布局中找到特定的 View
,然后对其进行操作。