java - 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>
我似乎无法正常工作,我不知道这是如何工作的。
解决方案
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
功能,然后再对其进行操作。
推荐阅读
- graph - 如何找到平面图的边排序(顺时针/逆时针)?
- ansible - 在ansible中,如何打印任务失败的每个项目的标准错误?
- javascript - SQL Server 截断大于列长度的字符串
- php - 如果变量仅等于 3,则脚本失败
- javascript - 我可以从 Javascript 触发 Yubikey 以在不触碰它的情况下给出响应吗?
- prestashop-1.7 - 在 Prestashop 1.7.3.0 的订单页面注销时出现 500 服务器错误
- azure - Azure 自定义视觉上的错误图像识别
- teamcity - Teamcity - 如何为包源设置凭据
- graphviz - Snakemake DAG 由于遇到文字点而无法工作 - 可能是 Graphiz 点问题?
- excel - 为什么我的自动过滤器用于删除带零的行后会删除标题?