更改listview中一个特定行的颜色

时间:2015-06-08 14:21:03

标签: android xml listview android-listview android-cursoradapter

我有一个listview(liste_joueurs),当我点击列表中的某个项目时,行会改变颜色并变为灰色(这是为了用户,他可以重新点击他点击的那一行)。

它没有完成我有12个按钮,列表上的每个项目都有一个数字,当我点击列表中的项目时,会出现一个按钮,并且他的文本记录了播放器的编号,这里是'片段的图片。

enter image description here

如果用户犯了错误,我有一个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);

cursorAdapter:

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我用这个文件来突出我的listview

<?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>

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

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

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