【问题标题】:Highlight a row in listview突出显示列表视图中的一行
【发布时间】:2013-09-07 17:39:31
【问题描述】:

我正在使用来自this 链接的引用创建一个列表视图。现在我试图突出显示列表视图中的特定行。当我按下按钮时,特定行会突出显示一秒钟。但我想要的是该行应该保持相同的颜色,直到我按下下一行的按钮。我的列表视图是

<ListView
        android:id="@+id/mainListView"
        android:layout_width="154dp"
        android:layout_height="fill_parent"
        android:layout_margin="10dp"
        android:background="@drawable/layer_list"
        android:dividerHeight="2px"
        >

并在列表视图中放置一个文本视图和一个图像视图。为了突出显示我遵循this 教程的视图。我是安卓新手。帮助我实现这一目标。提前谢谢..

【问题讨论】:

  • 为单元格创建一个选择器
  • 保留所选项目的位置并在 getView 中相应地使用它 - 可能与 stackoverflow.com/questions/9281000/… 重复
  • @user 试试我的答案,它肯定会起作用。我有两个实现了这个功能
  • 我尝试创建选择器。但这对我没有用。你能详细解释一下吗?

标签: android listview android-listview


【解决方案1】:

可绘制文件夹 listview_item_selection_effect.xml 中创建一个选择器

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_focused="true">
    <shape>
        <solid android:color="#ffffff" />
    </shape>
</item>
    <item>
    <shape>
        <solid android:color="#00a7eb" />
    </shape>
</item>
</selector>

在您的具有 ListView

的布局中
android:background="?android:attr/activatedBackgroundIndicator"

在您的 Activity 上单击 ListView 项目

   listView.setOnItemClickListener(new OnItemClickListener(){
    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3){ 
       listView.setSelector(R.drawable.listview_item_selection_effect);
    listView.setItemChecked(position,true);
    }
});

列表视图

android:choiceMode="singleChoice"

【讨论】:

  • Position 是列表视图中选中的Item
  • 感谢您的回复。但我不想提及之前在运行时的位置,当我按下向上按钮时,listview 应该突出显示特定的行,直到我按下下一个。
  • 你现在面临的问题是什么,如果你能把你的示例项目发给我,我可以解决这个问题
  • 如果我把选择模式放在列表视图中它不是工作的朋友。但没有它,它工作得很好。谢谢你的朋友:-) ..
【解决方案2】:

a) 使用自定义布局

    MyLayout extends LinearLayout implements Checkable {
    boolean check = false
    public void setChecked(boolean checked) {
          if (checked){
             //HIGHLIGHT THE BACKGROUND
          }{
            // remove the background
          }

    }
    public void toggle() {
        setChecked(!check);
    }
    }

b )在自定义列表视图项中使用MyLayout 作为布局

c )在您的活动中实现OnItemClickListeneronItemClick 拨打listview.setItemChecked(position, true);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-19
    • 2012-11-21
    • 1970-01-01
    • 2012-06-10
    • 2011-10-06
    • 2013-12-22
    • 2013-09-11
    • 1970-01-01
    相关资源
    最近更新 更多