bitmapfactory-android listview适配器的错误

问题描述

android listview适配器的错误

具体报错见下面。高手求解决·····
先贴代码,下面是PointMgrActivity.java

package com.app.bluetoothpro;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import com.app.DB.DBManager;
import com.app.DB.PointClass;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class PointMgrActivity extends Activity {

protected static final String ACTIVITY_TAG = "LogDemo";
private DBManager dbManager;
public SQLiteDatabase db;
String gID;
String pStatu;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.point_mgr);
    dbManager = new DBManager(this);

    /*
     * Points person = new Points(); person.pid = "id1"; person.pstatu =
     * "OFF"; db.execSQL("INSERT INTO points VALUES (?, ?)", new
     * Object[]{person.pid, person.pstatu});
     */
    addbtn();
}

/********************************* 添加add方法 ****************************************/
public void add() {
    ArrayList<PointClass> persons = new ArrayList<PointClass>();

    PointClass person = new PointClass(gID, pStatu);

    persons.add(person);
    dbManager.add(persons);
}

 *  */***************************** 添加query()查询方法 ******************************/
public void query() {
    List<PointClass> persons = dbManager.query();
    ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>();
    for (PointClass person : persons) {
        HashMap<String, Object> map = new HashMap<String, Object>();
        map.put("pid", person.pid);
        map.put("pstatu", getstatu(pStatu));
        listItem.add(map);
        Log.d(ACTIVITY_TAG, person.pid + " +++++++++++++++++++++++++++ "
                + getstatu(pStatu));
    }
    ListView list = (ListView) findViewById(R.id.pointListView);
    SimpleAdapter listItemAdapter = new SimpleAdapter(this, listItem,
            R.layout.point_mgr_list_item,
            new String[] { "pointsID", "pointsStatu" },
            new int[] { R.id.pointsID, R.id.pointsStatu });
    list.setAdapter(listItemAdapter);

    list.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            // TODO Auto-generated method stub
        }
    });
}
private Object getstatu(String str) {
    // TODO Auto-generated method stub
    if (str.equals("ON")) {
        return R.drawable.led_green;
    } else {
        return R.drawable.led_red;
    }
}*  * 

/************************* 为添加按钮添加事件 **************************/

void addbtn() {
    ImageButton ib_add = (ImageButton) findViewById(R.id.addpoint);
    ib_add.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            LayoutInflater inflater = getLayoutInflater();
            final View layout = inflater.inflate(R.layout.add_dialog,
                    (ViewGroup) findViewById(R.id.dialog));
            new AlertDialog.Builder(PointMgrActivity.this)
                    .setTitle("请添加节点")
                    .setView(layout)
                    .setPositiveButton("确定",
                            new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog,
                                        int which) {
                                    EditText et = (EditText) layout
                                            .findViewById(R.id.addID);
                                    gID = et.getText().toString();
                                    pStatu = "OFF";
                                    /***************************************** 将输入的id,状态写入map中 **************/
                                    Log.i(PointMgrActivity.ACTIVITY_TAG,
                                            gID + "   " + pStatu);
                                    // insert(db,gID,pStatu);
                                    // close(db);
                                    add();
                                    query();

                                    /******************** 调试代码 ********************************************/
                                    Log.i(PointMgrActivity.ACTIVITY_TAG,
                                            gID);
                                    /***************************************************************************************/

                                }
                            })
                    .setNegativeButton("取消",
                            new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog,
                                        int which) {

                                }
                            }).show();
        }

    });

}

}

layout.xml布局文件中有listview,有 两列textview imageview ,
上面query()方法是将从sqlite查询的数据在listview显示,下面是适配器代码:
ListView list = (ListView) findViewById(R.id.pointListView);
SimpleAdapter listItemAdapter = new SimpleAdapter(this, listItem,
R.layout.point_mgr_list_item,
new String[] { "pointsID", "pointsStatu" },
new int[] { R.id.pointsID, R.id.pointsStatu });
list.setAdapter(listItemAdapter);
log调试得到正确从数据库查询数据,就是不listview显示数据.
运行报错:
10-23 10:56:36.670: E/BitmapFactory(12701): Unable to decode stream: java.io.FileNotFoundException: /: open failed: EISDIR (Is a directory)

解决方案

适配器参数写错了
SimpleAdapter listItemAdapter = new SimpleAdapter(this, listItem, R.layout.point_mgr_list_item, new String[] { "pid", "pstatu" }, new int[] { R.id.pointsID, R.id.pointsStatu }); list.setAdapter(listItemAdapter);

时间: 2024-09-26 03:02:10

bitmapfactory-android listview适配器的错误的相关文章

Android ListView适配器(Adapter)优化方法详解

Android ListView的优化,在做Android项目的时候,在用到ListView 界面及数据显示,这个时候如果资源过大,对项目来说,用户体验肯定是不好的,这里就对如何优化做了详细介绍: Adapter的作用就是ListView界面与数据之间的桥梁,当列表里的每一项显示到页面时,都会调用Adapter的getView方法返回一个View.想过没有? 在我们的列表有1000000项时会是什么样的?是不是会占用极大的系统资源? ListView的Adapter的作用如下图所示: 先看看下面

android listview Caused by: java.lang.ArrayIndexOutOfBoundsException: length=3; index=3

android listview 适配器在多种类型viewType报错:   Caused by: java.lang.ArrayIndexOutOfBoundsException: length=3; index=3 2 at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:6822) 3 at android.widget.AbsListView.trackMotionScroll(AbsListView

解决Android ListView数据为空及加载错误的方法_Android

在项目中,都会用到ListView或GridView等列表控件.一般会用来展示从网络请求的数据 .如果请求的数据为空或者在请求的时候正好无没有网络了,我们的界面应该如何展示呢?数据为空的时候,ListView可以使用setEmptyView (View emptyView) 方法来我们需要的统一界面.数据加载失败呢?我们也可以统一进行处理. //下面这个类是简单地封装用于无数据及加载错误的一个页面. public class CommonShowView { private Context mC

Android ListView万能适配器实例代码_Android

ListView是开发中最常用的控件了,但是总是会写重复的代码,浪费时间又没有意义. 最近参考一些资料,发现一个万能ListView适配器,代码量少,节省时间,总结一下分享给大家. 首先有一个自定义的Adapter继承于BaseAdapter,下面是自定义的Adapter,精华在getView()方法中 package com.example.mylistview.util; import java.util.List; import android.content.Context; impor

Android ListView万能适配器实例代码

ListView是开发中最常用的控件了,但是总是会写重复的代码,浪费时间又没有意义. 最近参考一些资料,发现一个万能ListView适配器,代码量少,节省时间,总结一下分享给大家. 首先有一个自定义的Adapter继承于BaseAdapter,下面是自定义的Adapter,精华在getView()方法中 package com.example.mylistview.util; import java.util.List; import android.content.Context; impor

[Android]ListView性能优化之视图缓存

前言 ListView是Android中最常用的控件,通过适配器来进行数据适配然后显示出来,而其性能是个很值得研究的话题.本文与你一起探讨Google I/O提供的优化Adapter方案,欢迎大家交流.   声明 欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblogs.com   正文 一.准备 1.1 了解关于Google IO大会关于Adapter的优化,参考以下文章: Android开发之List

解决Android ListView异步加载图片乱序问题

在Android所有系统自带的控件当中,ListView这个控件算是用法比较复杂的了,关键是用法复杂也就算了,它还经常会出现一些稀奇古怪的问题,让人非常头疼.比如说在ListView中加载图片,如果是同步加载图片倒还好,但是一旦使用异步加载图片那么问题就来了,这个问题我相信很多Android开发者都曾经遇到过,就是异步加载图片会出现错位乱序的情况.遇到这个问题时,不少人在网上搜索找到了相应的解决方案,但是真正深入理解这个问题出现的原因并对症解决的人恐怕还并不是很多.那么今天我们就来具体深入分析一

Android ListView的一个问题

需要的功能很简单,就是一个带checkbox的列表,提交时需要知道用户选择了那些项目,如下图: 使用SimpleAdapter作为数据适配器,重写SimpleAdapter.ViewBinder的方法,这样用比自定义Adapter要方便点,代码如下 datas定义是private List<Map<String, Object>> datas=null; 其中让Map中保存一项自我引用(my)绑定到checkBox private Map<String, Object>

提升Android ListView性能的几个技巧

ListView如何运作的? ListView是设计应用于对可扩展性和高性能要求的地方.实际上,这就意味着ListView有以下2个要求: 尽可能少的创建View; 只是绘制和布局在屏幕上可见的子View. 理解第一点很简单:通过布局xml文件在创建View并显示是很昂贵耗时耗资源的操作.尽管布局文件已经编译打包成了二进制形式以便于更高效的语法解析,但是创建View仍然需要通过一个特殊的XML树,并实例化所有需要响应的View. ListView通过回收一些不可见的Views,通常在Androi