android - 在列表视图中更改所选项目的文本颜色(Kotlin,Android)
问题描述
我的应用程序中有一个列表视图。如何更改所选项目的文本颜色?
例如,我选择了一些列表项。它的文本颜色应该从黑色变为灰色。然后我选择另一个项目。它的文本颜色也应该从黑色变为灰色,但第一个元素的文本颜色应该再次变为黑色。
我尝试了以下代码,但出现异常:
尝试
void android.widget.TextView.setText(java.lang.CharSequence)
在空对象引用上调用虚拟方法“”
QuestionActivity.kt:
var answersList = arrayOf("about", "against", "for", "by")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_question)
val selection= findViewById<TextView>(R.id.options)
val lv = findViewById<ListView>(R.id.variants)
val prodAdapter = ArrayAdapter<String>(this, R.layout.mytextview, answersList)
lv.adapter = prodAdapter
lv.setOnItemClickListener { parent, view, position, id ->
val selectedItem = parent.getItemAtPosition(position).toString()
selection.setText(selectedItem)
selection.setTextColor(Color.DKGRAY)
}}
活动问题.xml:
<?xml version="1.0" encoding="utf-8"?>
<ListView
android:id="@+id/variants"
android:divider="#FFFFFF"
android:layout_width="347dp"
android:layout_height="254dp" tools:ignore="MissingConstraints"
app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="32dp"
android:layout_marginStart="32dp" app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="32dp"
android:layout_marginRight="32dp" android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@+id/appBarLayout" android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="@+id/button4"
/>
</android.support.constraint.ConstraintLayout>
和mytextview.xml:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/options"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:gravity="center_vertical"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
android:textSize="20dp"
android:textColor="#000000"
/>
请帮我解决这个问题
解决方案
你必须使用选择器。就像是 :
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color ="@color/selected_color" android:state_selected="true"/>
<item android:color ="@color/pressed_color" android:state_pressed="true"/>
<item android:color ="@color/default_color"/>
</selector>
然后在项目 XML 文件中使用您的选择器:
android:textColor="@color/text_selector"
您可以在这里获得更多信息
推荐阅读
- javascript - Css 和 Javascript 未在 iframe 中解析
- oracle - oracle查询多表中的select数据
- react-native - 当按钮样式位置为绝对时,按钮的上半部分不起作用
- python - 在 DRF 请求中间接分配外键
- macos - XQuartz 从远程 linux 服务器到我的 OS X Mojave XQuartz 服务器的响应极慢
- python - 正则表达式 - 前瞻断言中的 Python 完全匹配
- javascript - React 用新的 onClick 替换默认组件
- javascript - JQuery点击事件触发错误的元素?
- angular - Pixie 图像编辑器与 Ionic 3.X 的集成
- python - 对 pandas 中的多个列执行关联