1

我有带有 TextView 项目的水平 listView,我的项目布局:

<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>

我想通过将 borded 设置为它的 textView 来仅突出显示一个选定的项目,例如。当我单击 item1 时,我想看到这个带有小边框的项目,现在当我单击 item2 时 - 这将突出显示,并且 item1 的边框将消失。

有任何想法吗 ?

提前致谢!

4

2 回答 2

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
    }
    ......
}
于 2013-08-06T10:01:39.587 回答
0
  • 可能是您需要属性来存储最后一个突出显示项目。
    ETC:

    查看 lastHighlightItem=null;

  • 覆盖onItemClick方法。
    ETC:

onItemClick(AdapterView parent, View view, int position, long id){

       if(lastHighlightItem!=null)
          lastHighlightItem.recover();
        //recover unHighlight state 
        view.highlight();//Highlight as you like
        lastHighlightItem = view;

}

于 2013-08-06T09:47:05.820 回答