【问题标题】:ListFragment: highlight selected rowListFragment:突出显示选定的行
【发布时间】:2013-02-27 15:12:53
【问题描述】:

我正在使用 ListFrament,我想突出显示选定的行。

我的选择器:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item 
    android:state_pressed="true"
    android:drawable="@color/gold" />
  <item
    android:state_selected="true"
    android:drawable="@color/plum" />
  <item 
    android:drawable="@color/medium_green" />
</selector>

我的 ListFragment 中的代码: 在 onCreateActivity 中:

this.getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);

点击:

@Override
public void onListItemClick(ListView list, View v, int position, long id) {
    super.onListItemClick(list, v, position, id);
    String tag = this.getTag();
    Log.d(TAG, "id, position " + id + " " + position);
    list.setSelection(position);
}

不幸的是,这不起作用 - 单击行时它只会闪烁“金色”...我希望所选行保持突出显示...

提前感谢您的回答,

【问题讨论】:

  • 您必须通过适配器来完成。适配器负责渲染列表项。

标签: android selector


【解决方案1】:

试试这个

设置行类型的全局变量。我正在使用 View,因为它是通用的

View previous;

在 onCreateView 中初始化视图

previous=new View(getContext);

而当 onListItemClick 这样做

public void onListItemClick(ListView list, View v, int position, long id) {
    super.onListItemClick(list, v, position, id);
    String tag = this.getTag();
    Log.d(TAG, "id, position " + id + " " + position);
   previous.setSelected(false);
   v.setSeleted(true);
   previous=v;
}

试试这个,然后回到我在我的旧应用程序中使用过这个......我肯定会工作......我希望这会对你有所帮助。

【讨论】:

  • 感谢您的回答-不幸的是,它对我不起作用-根据您的想法,我尝试过:previous.setSelected(false); previous.setBackgroundColor(Color.TRANSPARENT); v.setSelected(true); v.setBackgroundColor(R.color.plum);以前的 = v; - 它看起来不太好,但它可以工作
  • 很高兴知道它对您有帮助..更改您的选择器代码...删除 android:state_pressed="true" 项...它将起作用...如果有帮助,您可以将其标记为答案你……
猜你喜欢
  • 2012-08-21
  • 2018-08-25
  • 1970-01-01
  • 1970-01-01
  • 2013-12-20
  • 2011-06-16
  • 1970-01-01
  • 1970-01-01
  • 2016-02-15
相关资源
最近更新 更多