Java Android studio单击Listview并设置视图
我试图在用户单击时显示所选的视图,但在滚动后它总是会获得其他视图。这是下面的图片。Java Android studio单击Listview并设置视图,java,android,listview,Java,Android,Listview,我试图在用户单击时显示所选的视图,但在滚动后它总是会获得其他视图。这是下面的图片。 final String[]str=新字符串[]{MediaStore.Audio.Media.TITLE,MediaStore.Audio.Media.ARTIST}; final int[]displayview=新int[]{R.id.music_name}; SimpleCrsorAdapter=新的SimpleCrsorAdapter(这个,R.layout.music\u项,光标,str,Disp
final String[]str=新字符串[]{MediaStore.Audio.Media.TITLE,MediaStore.Audio.Media.ARTIST};
final int[]displayview=新int[]{R.id.music_name};
SimpleCrsorAdapter=新的SimpleCrsorAdapter(这个,R.layout.music\u项,光标,str,DisplayView,CursorAdapter.FLAG\u REGISTER\u CONTENT\u OBSERVER);
音乐列表。设置适配器(适配器);
music_list.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
int select_item=-1;
@凌驾
公共视图单击(AdapterView AdapterView、最终视图视图、最终int i、长l){
如果((选择_项==-1)| |(选择_项==i)){
视图.背景颜色(颜色.灰色);
index=cursor.getString(cursor.getColumnIndex(“标题”);
音乐列表1.背景色(颜色:白色);
Log.d(“i”,;:“+i);
}否则{
视图.背景颜色(颜色.灰色);
视图2.setBackgroundColor(颜色:白色);
index=cursor.getString(cursor.getColumnIndex(“标题”);
音乐列表1.背景色(颜色:白色);
}
view2=视图;
选择_item=i;
}
});
i
是适配器用于屏幕内可见视图的位置,因此使用l
代替i
,后者是每行的唯一行id
if ((select_item == -1) || (select_item == l)) {//...}
else{//..}
select_item = l;
(select_item==i)始终为真
if ((select_item == -1) || (select_item == l)) {//...}
else{//..}
select_item = l;