listview-SlideExpandableListView适配器改变时,未通知到Activity

问题描述

SlideExpandableListView适配器改变时,未通知到Activity
The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread but only from the UI thread. [in ListView(2131230834 class com.wlyc.warehousechampions.ui.views.slideexpandable.ActionSlideExpandableListView) with Adapter(class com.wlyc.warehousechampions.ui.views.slideexpandable.SlideExpandableListAdapter)]

package com.wlyc.warehousechampions.ui.views.slideexpandable;

import com.wlyc.warehousechampions.R;

import android.view.View;
import android.widget.ListAdapter;

/**

  • ListAdapter that adds sliding functionality to a list.
  • Uses R.id.expandalbe_toggle_button and R.id.expandable id's if no
  • ids are given in the contructor.*
  • @author tjerk
  • @date 6/13/12 8:04 AM
    */
    public class SlideExpandableListAdapter extends AbstractSlideExpandableListAdapter {
    private int toggle_button_id;
    private int expandable_view_id;

    public SlideExpandableListAdapter(ListAdapter wrapped int toggle_button_id int expandable_view_id) {
    super(wrapped);
    this.toggle_button_id = toggle_button_id;
    this.expandable_view_id = expandable_view_id;
    }

    public SlideExpandableListAdapter(ListAdapter wrapped) {
    this(wrapped R.id.expandable_toggle_button R.id.expandable);
    }

    @Override
    public View getExpandToggleButton(View parent) {
    return parent.findViewById(toggle_button_id);
    }

    @Override
    public View getExpandableView(View parent) {
    return parent.findViewById(expandable_view_id);
    }
    }

package com.wlyc.warehousechampions.ui.views.slideexpandable;

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListAdapter;

/**

  • A more specific expandable listview in which the expandable area
  • consist of some buttons which are context actions for the item itself.*
  • It handles event binding for those buttons and allow for adding
  • a listener that will be invoked if one of those buttons are pressed.*
  • @author tjerk
  • @date 6/26/12 7:01 PM
    */
    public class ActionSlideExpandableListView extends SlideExpandableListView {
    private OnActionClickListener listener;
    private int[] buttonIds = null;

    public ActionSlideExpandableListView(Context context) {
    super(context);
    }

    public ActionSlideExpandableListView(Context context AttributeSet attrs) {
    super(context attrs);
    }

    public ActionSlideExpandableListView(Context context AttributeSet attrs int defStyle) {
    super(context attrs defStyle);
    }

    public void setItemActionListener(OnActionClickListener listener int ... buttonIds) {
    this.listener = listener;
    this.buttonIds = buttonIds;
    }

    /**

    • Interface for callback to be invoked whenever an action is clicked in
    • the expandle area of the list item./public interface OnActionClickListener {/*
      • Called when an action item is clicked.*
      • @param itemView the view of the list item
      • @param clickedView the view clicked
      • @param position the position in the listview*/public void onClick(View itemView View clickedView int position);}

    public void setAdapter(ListAdapter adapter) {
    super.setAdapter(new WrapperListAdapterImpl(adapter) {

        @Override    public View getView(final int position View view ViewGroup viewGroup) {        final View listView = wrapped.getView(position view viewGroup);        // add the action listeners        if(buttonIds != null && listView!=null) {            for(int id : buttonIds) {                View buttonView = listView.findViewById(id);                if(buttonView!=null) {                    buttonView.findViewById(id).setOnClickListener(new OnClickListener() {                        @Override                        public void onClick(View view) {                            if(listener!=null) {                                listener.onClick(listView view position);                            }                        }                    });                }            }        }        return listView;    }});

    }
    }

时间: 2025-01-21 02:23:02

listview-SlideExpandableListView适配器改变时,未通知到Activity的相关文章

Delphi中ListView列宽改变时的消息响应

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls,CommCtrl; type PHD_NOTIFY=^HD_NOTIFY; TForm1 = class(TForm) ListView1: TListView; Button1: TButton; procedure FormDestro

监听-listview item中是有EditText改变时获取Postion?

问题描述 listview item中是有EditText改变时获取Postion? listview item中是有EditText, 怎么在监听每个EditText的时候获取这个EditText的Postion? 解决方案 getview时,可以给这个edittext的tag赋值postion,然后取出tag得到postion 解决方案二: 不是本地爸爸的话大把大把差不多你都能 解决方案三: 用ListView 不要重用ConvertView

Android的listview怎样动态改变显示的数量

问题描述 Android的listview怎样动态改变显示的数量 我做了一个简单的小程序,在一个界面上有一个按钮,然后点击按钮就增加一行listview,但是我 我的程序点击却没有反应,应该怎样解决,这是源代码 package com.example.dianjishiyan; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.content.Context

mfc vc6 0 sql 数据库-请问当SQL Server数据库中数据有更新的时候,如何通知到MFC上?

问题描述 请问当SQL Server数据库中数据有更新的时候,如何通知到MFC上? 编程环境VC6.0,在MFC对话框中添加了一些控件,并且能够显示数据库中内容, 使用的是CRecordSet类,读取完数据库后就调用Close关闭数据库了. 我想请问的是,如何实时的显示数据库内容? 或者当数据库数据有变更的时候才显示到 MFC的控件上? 解决方案 参考这个试试 SQL Server 2008 表数据改变后发送消息 http://blog.csdn.net/sliphades/article/de

如果常量类进行改变时,只编译常量类,而使用常量的类不重新编码,这样改动实际上算没有生效(转)

  在Java开发过程中有很多通用的准则,遵守这些准则能够避免很多不必要的错误发生,让代码的质量更高,下面的内容为书籍第一章<Java开发中通用的方法和准则>的阅读笔记. 一.不要在常量和变量中出现易混淆的字母 例如数字1和小写字母l容易混淆,数字0和字母o容易混淆,因此在变量或常量命名时需要避免两个同时出现. 另外命名最好遵守Java编码规范:包名全小写,类名首字母全大写,常量全部大写并用下划线分隔,变量采用驼峰命名法等等. 二.不要让常量蜕变成变量 常量应该保证在编译期就确定其值不变,而不

ajax单独刷新表-表单的异步加载单行,返回时未刷新

问题描述 表单的异步加载单行,返回时未刷新 在做服务器控件的时候,父窗体有一个table,多行,单击右键弹出子窗体,获取子窗体的值后关闭子窗体并异步刷新父窗体,用的是a链接到子窗体的,,回来的时候也是..求解

xml-方向改变时如何调整图像的大小?

问题描述 方向改变时如何调整图像的大小? 我有一个图像的大小是320x210,是从xml文件中的drawable中调用的图像.在纵向模式中可以正常运行,但是当我改变设备的方向为横向模式时,图像的大小就不能符合.如何解决这个问题? <ImageView android:id="@+id/imageView2" android:layout_width="wrap_content" android:layout_height="wrap_content&

安卓listview加载网络图片时,当时用了软引用之后,是不是就不用在使用二级缓存机制了

问题描述 安卓listview加载网络图片时,当时用了软引用之后,是不是就不用在使用二级缓存机制了 软引用不就是避免OOM的吗,和二级缓存机制的作用是一样的吧,可能二级缓存会更打程度的减少访问网络的次数吧,,但是如果在一个listview加载网络图片的项目中,是不是这二者选择一个用就行了? 解决方案 首先,ListView加载图片,使用什么软引用什么的,其实都是避免oom,那么你可以做到一下几点 1.使用缓存,至于你说的两种,任意一种都是可以的,起码起到了作用 2.当ListView去网络读取图

JS触发方法事件,三个下拉框,其中任意两个有值,第三个改变时触发,

问题描述 JS触发方法事件,三个下拉框,其中任意两个有值,第三个改变时触发, JS触发方法事件,三个下拉框,其中任意两个有值,第三个改变时触发, 解决方案 3个select的事件都判断下是否都有值了,有了就执行相关代码 if(sel1.value!=''&&sel2.value!=''&&sel3.value!=''){ //..... } 解决方案二: JS改变input的value值不触发onchange事件解决方案 解决方案三: 你这是什么意思?任意两个有值?第三个改