更改列表视图中某一特定行的颜色

change color of one specific row in listview

我有一个列表视图(liste_joueurs),当我点击列表中的一个项目时,该行改变颜色并变成灰色(这是给用户的,他可以记住他点击的是哪一行) .

还没有完成我有 12 个按钮,列表中的每个项目都有一个编号,当我单击列表中的一个项目时,会出现一个按钮,他的文本会显示玩家的编号,这是片段的图片.

如果用户犯错,我有一个 onclickListener 用于下面的 12 按钮,当我点击时,按钮消失了,但我的问题是我需要找到与数字对应的好行并改变他的颜色白色。我该怎么做?

现在让我们看看代码

在我的片段中:

 // I take all the player in my database
 Cursor cursor = joueurDab.getAll();
 //I fill the listView with a cursorAdapter
 CursorListJoueur cl = new CursorListJoueur(context, cursor);
 liste_joueurs.setAdapter(cl);

游标适配器:

public class CursorListJoueur extends CursorAdapter {

private CategorieDAO categorieDab;
public CursorListJoueur(Context pContext, Cursor c) {
    super(pContext, c, 0);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
    categorieDab = new CategorieDAO(context);
    return LayoutInflater.from(context).inflate(R.layout.row_player, parent, false);
//row_player is the xml file where I highlight row 
}

@Override
public void bindView(View view, Context context, Cursor cursor) {

    Categorie categorie = this.categorieDab.selectionner(cursor.getInt( 6 ));

    ((TextView) view.findViewById(R.id.numero)).setText(String.valueOf(cursor.getInt(1)));
    ((TextView)view.findViewById( R.id.nom )).setText(cursor.getString(2));
    ((TextView)view.findViewById( R.id.prenom )).setText(cursor.getString( 3 ));
    ((TextView)view.findViewById( R.id.categorie )).setText(categorie.getNom());


    if( cursor.getInt( 5 ) == 1)
        ((CheckBox)view.findViewById( R.id.is_goal )).setChecked( true );
    else
        ((CheckBox)view.findViewById( R.id.is_goal )).setChecked( false );
}
}

row_player.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="horizontal"
android:layout_width="match_parent"
//this ligne
android:background="@drawable/testlist"
android:layout_height="match_parent">

<TextView
    //etc ...

最后 testlist.xml 我使用这个文件突出显示我的列表视图

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/darker_gray" android:state_selected="true"/>
    <item android:drawable="@android:color/darker_gray" android:state_activated="true"/>
    <item android:drawable="@android:color/darker_gray" android:state_pressed="true"/>
    <item android:drawable="@color/android:transparent"/>
</selector>

感谢您的帮助

您必须通过适配器设置要突出显示的行的背景。如果用户按下错误的按钮更改您的适配器数据(或告诉它您想要突出显示哪一行)并调用 notifyDataSetChanged()。

适配器随后可以在其 getView() 函数中将行的背景颜色设置为白色。