【问题标题】:Listview Adapter selected row background androidListview Adapter 选中的行背景android
【发布时间】:2014-04-14 09:46:25
【问题描述】:

我正在动态更改 listviewAdapter 行选定项。在适配器中 selectedItem 默认为 -1。

public static int selectedItem = -1; // no item selected by default

并且在适配器getview方法中调用highlightItem方法。

public View getView(final int position, View convertView, ViewGroup parent) {
        View vi = convertView;
        if (convertView == null) {
            vi = inflater.inflate(R.layout.catalogue_row, null);
            holder = new ViewHolder();

highlightItem(selectedItem,position,vi);

这是我的 highlightItem 方法。

private static void highlightItem(int selectedItem,int position, View result) {

    System.out.println("selected item "+selectedItem);
    if(position == selectedItem) {

        // you can define your own color of selected item here
        ViewHolder.lyCatalogueRow.setBackgroundColor(Color.parseColor(SharePreferenceController.getListViwHightlightColor()));

    } else {

        // you can define your own default selector here
        ViewHolder.lyCatalogueRow.setBackgroundColor(Color.parseColor(SharePreferenceController.getListViwBackgroundColor()));

    }
}

当我点击列表视图项时

private OnItemClickListener itemlistener = new OnItemClickListener(){

@Override
public void onItemClick(AdapterView<?> parent, View view, int position,long id) {
    // TODO Auto-generated method stub

    int item_position = position -1;

    System.out.println("selectedItemposition "+item_position);

    CatalogueEfficientAdapter.selectedItem=item_position;

    catalogueEfficientAdapter.notifyDataSetChanged();


}

};

我的数组列表包含三个项目。当我单击第三项时,它被突出显示。现在,如果我单击第二个元素,则仅应突出显示第二个元素,但突出显示第三行。如何仅选择和突出显示所选项目

更新 问题是未更新的 highlightItem。

【问题讨论】:

  • 你可以在日志中打印值positionselectedItem 并在此处发布...

标签: android


【解决方案1】:
public View getView(final int position, View convertView, ViewGroup parent) {
        View vi = convertView;
        if (convertView == null) {
            vi = inflater.inflate(R.layout.catalogue_row, null);

    if(position == selectedItem) {

        // you can define your own color of selected item here
        vi.setBackgroundColor(Color.parseColor(SharePreferenceController.getListViwHightlightColor()));

    } else {

        // you can define your own default selector here
        vi.setBackgroundColor(Color.parseColor(SharePreferenceController.getListViwBackgroundColor()));

    }

【讨论】:

  • 您好,请问您如何获取 selectedItem 的值?
  • 嗨! selectedItem 是 Adapter 中的特殊分隔字段
【解决方案2】:

如果您想手动和以编程方式选择项目,您可以尝试从 ViewHolder 中丢弃。
确定getView方法中的每个元素!

【讨论】:

    【解决方案3】:
    public void onItemClick(AdapterView<?> parent, View view, int position,long id) {
        // Dont decrement the position
        int item_position = position;
    
        System.out.println("selectedItemposition "+item_position);
    
        CatalogueEfficientAdapter.selectedItem=item_position;
    
        catalogueEfficientAdapter.notifyDataSetChanged();   
    }
    

    【讨论】:

      【解决方案4】:
      // try this way hope this will help you...
      
      1.define your "ListView" item selector color in colors.xml
      <?xml version="1.0" encoding="utf-8"?>
      <resources>
      <color name="list_item_selected_bg">#FF0000</color>
      </resources>
      
      2.define drawable selector for "ListView" item
      <?xml version="1.0" encoding="utf-8"?>
      <selector xmlns:android="http://schemas.android.com/apk/res/android">
      
          <!-- Selected -->
          <item
              android:state_focused="true"
              android:state_selected="false"
              android:drawable="@color/list_item_selected_bg"/>
      
          <!-- Pressed -->
          <item
              android:state_selected="true"
              android:state_focused="false"
              android:drawable="@color/list_item_selected_bg" />
      
      </selector>
      
      3.use this selector for "ListView" item selection
      yourListView.setSelector(R.drawable.list_item_selector);
      

      【讨论】:

        猜你喜欢
        • 2023-03-06
        • 1970-01-01
        • 2011-05-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-13
        • 1970-01-01
        相关资源
        最近更新 更多