Neil_Ling 2014-10-23 03:33 采纳率: 100%
浏览 2458
已采纳

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)

展开全部

  • 写回答

1条回答 默认 最新

  • Neil_Ling 2014-10-23 21:08
    关注

    适配器参数写错了
    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);

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 lvm2被mask了,怎么unmask都没用(标签-ubuntu|关键词-apt)
  • ¥15 交叉注意力机制的残差问题
  • ¥15 微信小程序:渲染收货地址时页面不显示
  • ¥20 win7 64位DirectShow提示初始化失败如何解决?
  • ¥20 小规模孤立词识别系统设计
  • ¥15 关于Java对接海康威视车牌识别一体机SDK是否需要固定外网的IP?
  • ¥15 Linux扩容时,格式化卡住了:vgdispaly查看卷组信息,没有输出
  • ¥18 关于#ubuntu#的问题:使用背景-工作职责内有七八台ubuntu系统的电脑,平时需要互相调取资料,想实现把这几台电脑用交换机组成一个局域网,来实现指定文件夹的互相调取和写入
  • ¥20 求一个简易射频信号综测仪
  • ¥15 esp8266 tally灯 接收端改为发射端
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部