对于同样的问题有无数的答案,但是它们似乎都不适合我,我不确定我做错了什么。
这是我的class B
{
public:
virtual ~B() {}
int get_a() const
{
do_something();
return a;
}
virtual void do_something() const
{
std::cout << "In B\n";
}
private:
int a{};
};
class D : public B
{
virtual void do_something() const
{
std::cout << "In D\n";
}
};
int main()
{
D d;
d.get_a();
}
:
activity.xml
以下是<ListView
...
android:listSelector="@drawable/list_view_selector" />
:
list_view_selector.xml
以下是<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:drawable="@drawable/list_view_item_border_selected" />
</selector>
:
list_view_item_border_selected.xml
最后,在我的活动中(以及在UI线程上运行):
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<stroke android:width="2dip" android:color="#000" />
</shape>
我还尝试过其他final ListView listView = (ListView) this.findViewById(R.id.trackList);
listView.setItemChecked(0, true);
以及各种方法调用,例如android:state_X
。
这些似乎都没有做任何事情。通过将.setSelection(0)
更改为仅具有默认状态,我可以在触摸时获得要突出显示的项目,如下所示:
list_view_selector.xml
但是,当我想从代码中更改选择时,这对我没有帮助。我做错了什么?