我有一个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);
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>
感谢您的帮助
答案 0 :(得分:0)
您必须通过适配器设置要突出显示的行的背景。如果用户按错了按钮,请更改适配器数据(或告诉它要突出显示哪一行)并调用notifyDataSetChanged()。
适配器可以在其getView()函数中将行的背景颜色设置为白色。