安卓-为什么我一调用mAdapter.notifyDataSetChanged();就崩溃

问题描述

为什么我一调用mAdapter.notifyDataSetChanged();就崩溃

public class MyAdapter extends BaseAdapter {

private ArrayList<Item> list;
//记录和控制选中状态
private static HashMap<Integer,Boolean> isSelected;
 //上下文
private Context context;
 //为子项导入布局
private LayoutInflater inflater;

public MyAdapter(ArrayList<Item> list,Context context) {
    this.list = list;
    this.context = context;
    inflater = LayoutInflater.from(context);
    isSelected = new HashMap<Integer, Boolean>();
    //初始化状态
    initDate();
}

private void initDate() {
    for(int i=0; i<list.size();i++) {
        getIsSelected().put(i,false);
    }
}

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return list.size();
}

@Override
public Object getItem(int position) {
    // TODO Auto-generated method stub
    return list.get(position);
}

@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub
    return position;
}

@Override
public View getView(final int position, View convertview,ViewGroup parent) {
    ViewHolder holder ;
    if(convertview == null) {
        // 获得ViewHolder对象
        holder = new ViewHolder();
        // 导入布局并赋值给convertview
        convertview = inflater.inflate(R.layout.item_layout, null);
        holder.project_name = (TextView) convertview.findViewById(R.id.project_name);
        holder.project_result = (TextView) convertview.findViewById(R.id.project_result);
        holder.project_resultval = (TextView) convertview.findViewById(R.id.project_resultval);
        holder.cbox = (CheckBox) convertview.findViewById(R.id.box);
        holder.cbox.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                if (isSelected.get(position)) {
                    isSelected.put(position, false);
                    setIsSelected(isSelected);
                } else {
                    isSelected.put(position, true);
                    setIsSelected(isSelected);
                }
            }
        });
        // 为view设置标签
        convertview.setTag(holder);
    } else {
        holder = (ViewHolder) convertview.getTag();
    }
    holder.project_name.setText(list.get(position).getproject_name());
    holder.project_result.setText(list.get(position).getproject_result());
    holder.project_resultval.setText(list.get(position).getproject_resultval());
    // 根据isSelected来设置checkbox的选中状况
    holder.cbox.setChecked(getIsSelected().get(position));
    return convertview;
}

public static HashMap<Integer,Boolean> getIsSelected() {
    return isSelected;
}

public static void setIsSelected(HashMap<Integer,Boolean> isSelected) {
    MyAdapter.isSelected = isSelected;
}

public final class ViewHolder {
    public TextView project_name;
    public TextView project_result;
    public TextView project_resultval;
    public CheckBox cbox;
}

}

解决方案

http://www.itstrike.cn/Question/1ba8ea59-d3a8-4bea-ab2a-0531e4b6f2f7.html

解决方案二:

你是不是在子线程中进行的,必须在主线程才行

时间: 2024-10-25 17:25:40

安卓-为什么我一调用mAdapter.notifyDataSetChanged();就崩溃的相关文章

编程-安卓,service,不调用ondestory()方法,并强退,怎么办?

问题描述 安卓,service,不调用ondestory()方法,并强退,怎么办? 代码如下,本应按下第二个按钮就调用service的ondestory方法,但没有,并且会强退. activity_main.xml: xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent&qu

c#-小白,写了个无限循环,一旦调用便会很快崩溃

问题描述 小白,写了个无限循环,一旦调用便会很快崩溃 想把一个单次识别函数改为连续识别,核心代码不会修改,所以直接用了无限循环 bool flag=false; --//事件触发 flag = !flag; for (int circle = 0; circle < 1; circle--) { if (flag) { --//识别程序 } circle = 0: } 有什么好的改进方式吗? 明明每次识别后都会释放,为什么运行时间一长还是会崩溃? 解决方案 bool flag=false; --

mfc webbrowser-MFC多次调用Navigate引起程序崩溃

问题描述 MFC多次调用Navigate引起程序崩溃 在调用Navigate挂了,次数多了就出现,随便问一下这个函数如何释放资源 解决方案 webbrowser对于网页支持有限,网页太复杂就支持不够好, 解决方案二: 看不出来,也许是网页的问题,也许是你程序的问题,信息太少

Java通过JNI调用libcurl导致JVM崩溃

问题描述 通过Java的JNI调用libcurl导致JVM崩溃,不知道什么原因大家帮看看,并不是刚上来就崩溃,而是执行一段就崩溃,JVM崩溃的log如下:##AfatalerrorhasbeendetectedbytheJavaRuntimeEnvironment:##SIGSEGV(0xb)atpc=0x0000003163221ca2,pid=12648,tid=47588522796480##JREversion:6.0_23-b05#JavaVM:JavaHotSpot(TM)64-Bi

百度应用内搜索安卓版上线 直接调用本地App

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 地图.视频类需求都可通过任意手机浏览器进入百度进行App调用 [TechWeb报道]3月12日消息,百度今日宣布应用内搜索(手机用户通过搜索对本地App进行调用)最新进展:用户通过任意手机浏览器使用百度搜索,都可直接调用手机本地应用(Native App). 百度针对应用内搜索的开发早在2012年秋季就已展开,通过自有产品百度App用户就可以

FragmentPagerAdapter与FragmentStatePagerAdapter区别

在一个 Android 应用中,我使用 FragmentPagerAdapter 来处理多 Fragment 页面的横向滑动.不过我碰到了一个问题,即当 Fragment 对应的数据集发生改变时,我希望能够通过调用 mAdapter.notifyDataSetChanged() 来触发 Fragment 页面使用新的数据调整或重新生成其内容,可是当我调用 notifyDataSetChanged() 后,发现什么都没发生. 搜索之后发现不止我一个人碰到这个问题,大家给出的解决办法五花八门,有些确

从源代码的角度分析--在BaseAdapter调用notifyDataSetChanged()之后发生了什么

导师安排我做一个小项目,其中涉及到利用Adapter作为ListView的适配器,为ListView提供数据.选中某一项后,要让这一项变成选中状态,也就是背景图片要换一下.下面我就用一个小例子来模拟.重点不在于实现,而是了解Adapter中notifyDataSetChanged()背后的运行机制.     我们先做一个小Demo(文中涉及的Demo在文章末尾),功能是选中某一项后,背景颜色会变红.代码非常简单,这里就不解释了.值得注意的是,当我们需要ListView进行刷新的时候,我们需要调用

安卓(Android)聊天机器人实现代码分享

今天看到一个ios写的图灵机器人,直接去官网(http://www.tuling123.com/openapi/)看了下API接入,太简单了,就一个get请求~于是乎,写了一个Android版本的机器人,没什么技术含量,但是挺好玩的~刚好昨晚看了自己喜欢的秦时明月,嘿嘿,小貔貅,就是我的机器人宠物啦~ 这是一个安卓智能聊天机器人的源码,采用了仿微信的风格设计,调用的是图灵机器人的API,能够实现智能聊天.讲故事.讲笑话.查天气.查公交等丰富的功能. 先给大家展示效果图: 下面是代码片段,想要源码

在 Fragment 中调用 Service 执行下载任务,但是失败了,代码如下,请问下是为什么啊

问题描述 在 Fragment 中调用 Service 执行下载任务,但是失败了,代码如下,请问下是为什么啊 public class JokeFragment extends Fragment implements ServiceConnection, SendCallBack { private RecyclerView mRecyclerView; private RecyclerAdapter mAdapter; private List<JokeData> mJokeDatas =