我有水平listView和TextView项目,我的项目布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayHorizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?android:attr/activatedBackgroundIndicator">
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="35dp" >
</TextView>
<View
android:layout_width="5dp"
android:layout_height="35dp"/>
</LinearLayout>
我想通过设置为textView来强调一个所选项目,例如。当我点击item1时,我希望看到这个带有小边框的项目,现在当我点击item2时 - 这将突出显示,而item1的边框将会消失。
有什么想法吗?
提前致谢!
答案 0 :(得分:2)
在您的活动中,创建一个如下所示的私有类:
private class ListChoice
{
private int value;
public ListChoice()
{
value = -1;
}
public void setListChoice(int v)
{
value = v;
}
public final int getListChoice()
{
return value;
}
}
在setOnItemClickListener中设置单击的行
listView.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
{
listChoice.setListChoice(position);
adapter.notifyDataSetChanged();
}
});
在listview适配器中使用它来突出显示或禁用突出显示
@Override
public View getView(final int position, View convertView, ViewGroup parent)
{
......
if(position == listChoice.getListChoice())
{
//highlight clicked item
}
else
{
//disable highlight for the rest of items
}
......
}
答案 1 :(得分:0)
您可能需要存储最后一个突出显示项目的属性。
等:
查看lastHighlightItem = null;
覆盖onItemClick方法 等:
onItemClick(AdapterView父视图,视图视图,int位置,长id){
if(lastHighlightItem!=null) lastHighlightItem.recover(); //recover unHighlight state view.highlight();//Highlight as you like lastHighlightItem = view;
}