昨天准备把2个activity通过fragment继承到一个里面, 左边的fragment是一个listview,右边的是左边某个项目的详细信息。
遇到的问题是当点击昨天某一个listview的时候把背景设置成高亮或者改变背景颜色, google提供的fragment例子上是有个这个功能的。但是当我移植到自己的项目里时,该功能一直不起作用。上网查了一下,实现方法跟我的一样,就是使用setItemChecked.
于是我就重新阅读了google的示例代码,发现他使用的是ArrayAdapter,我用的是BaseAdapter,查了资料发现这2个类区别不大,就是多一个filter接口 , 于是把我的BaseAdapter实现了filter接口,还是不起作用。
于是我仔细查了ArrayAdapter的资料,发现简单版只有一个EditText控件,发现该控件实现了checkable接口。 于是上网搜Listview和checkable ,果然发现很多资料。
于是自定一个一个RelativeLayout类 ,实现checkable接口, 再把布局文件改成自定已的RelativeLayout类, 终于实现了更改listview的某一项的背景颜色。
关键代码只有几句
public void setChecked(boolean checked) {
if(checked){
this.setBackgroundColor(Color.GREEN);
refreshDrawableState();
}else{
this.setBackgroundColor(Color.TRANSPARENT);
refreshDrawableState();
}
}
遇到的问题是当点击昨天某一个listview的时候把背景设置成高亮或者改变背景颜色, google提供的fragment例子上是有个这个功能的。但是当我移植到自己的项目里时,该功能一直不起作用。上网查了一下,实现方法跟我的一样,就是使用setItemChecked.
于是我就重新阅读了google的示例代码,发现他使用的是ArrayAdapter,我用的是BaseAdapter,查了资料发现这2个类区别不大,就是多一个filter接口 , 于是把我的BaseAdapter实现了filter接口,还是不起作用。
于是我仔细查了ArrayAdapter的资料,发现简单版只有一个EditText控件,发现该控件实现了checkable接口。 于是上网搜Listview和checkable ,果然发现很多资料。
于是自定一个一个RelativeLayout类 ,实现checkable接口, 再把布局文件改成自定已的RelativeLayout类, 终于实现了更改listview的某一项的背景颜色。
关键代码只有几句
public void setChecked(boolean checked) {
if(checked){
this.setBackgroundColor(Color.GREEN);
refreshDrawableState();
}else{
this.setBackgroundColor(Color.TRANSPARENT);
refreshDrawableState();
}
}