单击时如何在视觉上影响 android 列表视图行中的所有项目?

How to visually affect all items in an android listview row upon click?

我有一个列表视图适配器,它的行使用线性布局,每行仅包含两个文本框。

我需要在触摸代码或书名时突出显示 整行

列表适配器每一行的布局XML(为简洁起见删除了不必要的属性)

<LinearLayout
    ...
    android:id="@+id/bookrowbackground">
    <TextView
        ...
        android:id="@+id/book_code"          
        android:onClick="ToggleBookSelection" />

    <TextView
        ...
        android:id="@+id/book_name"
        android:onClick="ToggleBookSelection"           
        />
</LinearLayout>

ToggleBookSelection 处理程序

public void ToggleBookSelection(View view) {
        TextView selectedTextView = (TextView)view;
       //Some code lines not related to the question ...
            selectedTextView.setBackgroundColor(getResources().getColor(R.color.colorPrimaryDark));
            selectedTextView.setTextColor(Color.WHITE);
        }

但这一次只会突出显示一个框,如下所示

我用谷歌搜索了一下,对每一行文本框使用相同的标签似乎是一种解决方案,但我不确定这是否是为该行中的两个文本视图设置背景颜色的最简洁方法。

我应该如何实现整行选择? 谢谢

希望这些对你有用

     dataListView.setAdapter(aa);
    //attach a listener to the list view
    dataListView.setOnItemClickListener (listener);

    dataListView.setItemsCanFocus(true);

使用 OnItem 点击侦听器并在其中执行您的操作。

OnItemClickListener listener = new OnItemClickListener (){
 @Override
  onItemClick(AdapterView<?> parent, View view, int position, long id){
  ((TextView)view.findViewById(R.id.yourTextViewId)).getText();
  //or do your stuff }

}

Use/add 将此添加到您的 ListView 中: android:listSelector="@color/colorPrimary"

示例:

 <ListView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/list"
            android:listSelector="@color/colorPrimary">
</ListView>