Android ListView选中项目突出显示

时间:2013-08-06 08:36:30

标签: android list layout view highlight

我有水平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的边框将会消失。

有什么想法吗?

提前致谢!

2 个答案:

答案 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;

}