【问题标题】:Android ListView selected item highlightAndroid ListView 选中项高亮
【发布时间】:2013-08-07 04:10:42
【问题描述】:

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

有什么想法吗?

提前致谢!

【问题讨论】:

  • 使用ListView.getSelected(),它应该返回您想要突出显示的列表项视图,在其中找到TextView,更改边框并记住它以在选择另一个项目时重置边框

标签: android list layout view highlight


【解决方案1】:
  • 您可能需要属性来存储最后一个突出显示项目。
    等等:

    查看 lastHighlightItem=null;

  • 覆盖onItemClick 方法。
    等等:

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;

}

【讨论】:

    【解决方案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();
        }
    });
    

    在列表视图适配器中使用它来突出显示或禁用突出显示

    @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
        }
        ......
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-24
      • 1970-01-01
      • 2015-02-20
      • 2013-11-04
      • 2023-03-05
      • 2011-09-07
      • 2014-09-02
      • 1970-01-01
      相关资源
      最近更新 更多