listview-ListView 的问题,按照书上例子,仿写了一个,结果出问题了,请大家看看到底哪里出错了啊

问题描述

ListView 的问题,按照书上例子,仿写了一个,结果出问题了,请大家看看到底哪里出错了啊

先是有两个布局文件,一个是关于ListView控件的,另一个是我自己定的线性布局,实现的是一个字符旁边先是一个图样。
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.IWIN.listview.MainActivity" >

<ListView
    android:id="@+id/listView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    />

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"

<ImageView
    android:id="@+id/image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
   />
<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginLeft="10dp"/>

然后定义了一个了类,定义字符和图样
package com.IWIN.listview;

public class Fruit {
private String name;
private int imageId;
public Fruit(String name,int imageId){
this.name=name;
this.imageId=imageId;
}
public int getImageId(){
return imageId;
}
public String getName(){
return name;
}

}

紧接着又定义了一个适配器
package com.IWIN.listview;

import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.IWIN.listview.Fruit;
import com.IWIN.listview.R;

public class FruitAdapter extends ArrayAdapter{

            private ImageView image;
            private TextView  textView;
            int resourceId;
public FruitAdapter(Context context, int textViewResourceId,
        List<Fruit> objects) {
    super(context,  textViewResourceId, objects);
    resourceId=textViewResourceId;

}
public View getView(int position,View convertView,ViewGroup parent){

    Fruit fruit=getItem(position);//找到在屏幕内的fruit类
    View view=LayoutInflater.from(getContext()).inflate(resourceId,null);//cetContentView是Activity里面的类
    image=(ImageView)view.findViewById(R.id.image);                     //LayoutInflater.from().inflate(常量ID,ViewGroup)可以在非Activity里面使用。
    textView=(TextView)view.findViewById(R.id.textView);
    image.setImageResource(fruit.getImageId());
    textView.setText(fruit.getName());
    return view;

}

}

再然后就是ManiActivity
private ListView listView;

protected void onCreate(Bundle savedInstanceState) {
    nitFruit();
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
   FruitAdapter adapter=new FruitAdapter(MainActivity.this,android.R.layout.simple_list_item_1,list);
    listView=(ListView)findViewById(R.id.listView);
    listView.setAdapter(adapter);
}

public void nitFruit(){
    Fruit read=new Fruit("read",R.drawable.ic_launcher);
    list.add(read);
    Fruit write=new Fruit("write",R.drawable.ic_launcher);
    list.add(write);
    Fruit white=new Fruit("white",R.drawable.ic_launcher);
    list.add(white);
    Fruit blue=new Fruit("blue",R.drawable.ic_launcher);
    list.add(blue);
    Fruit sea=new Fruit("sea",R.drawable.ic_launcher);
    list.add(sea);
    Fruit like=new Fruit("like",R.drawable.ic_launcher);
    list.add(like);
    Fruit love=new Fruit("love",R.drawable.ic_launcher);
    list.add(love);
    Fruit student=new Fruit("student",R.drawable.ic_launcher);
    list.add(student);
    Fruit teacher=new Fruit("teacher",R.drawable.ic_launcher);
    list.add(teacher);
    Fruit classmates=new Fruit("classmates",R.drawable.ic_launcher);
    list.add(classmates);
    Fruit classroom=new Fruit("classroom",R.drawable.ic_launcher);
    list.add(classroom);
    Fruit hello=new Fruit("hello",R.drawable.ic_launcher);
    list.add(hello);
}

}

编译后LogCat显示的错误,我也没看出问题

09-11 02:45:16.776: W/dalvikvm(844): threadid=1: thread exiting with uncaught exception (group=0x409bf1f8)
09-11 02:45:16.796: E/AndroidRuntime(844): FATAL EXCEPTION: main
09-11 02:45:16.796: E/AndroidRuntime(844): java.lang.NullPointerException
09-11 02:45:16.796: E/AndroidRuntime(844): at com.IWIN.listview.FruitAdapter.getView(FruitAdapter.java:34)
09-11 02:45:16.796: E/AndroidRuntime(844): at android.widget.AbsListView.obtainView(AbsListView.java:2033)
09-11 02:45:16.796: E/AndroidRuntime(844): at android.widget.ListView.makeAndAddView(ListView.java:1772)
09-11 02:45:16.796: E/AndroidRuntime(844): at android.widget.ListView.fillDown(ListView.java:672)
09-11 02:45:16.796: E/AndroidRuntime(844): at android.widget.ListView.fillFromTop(ListView.java:732)
09-11 02:45:16.796: E/AndroidRuntime(844): at android.widget.ListView.layoutChildren(ListView.java:1625)
09-11 02:45:16.796: E/AndroidRuntime(844): at android.widget.AbsListView.onLayout(AbsListView.java:1863)
09-11 02:45:16.796: E/AndroidRuntime(844): at android.view.View.layout(View.java:11278)
09-11 02:45:16.796: E/AndroidRuntime(844): at android.view.ViewGroup.layout(ViewGroup.java:4224)
09-11 02:45:16.796: E/AndroidRuntime(844): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1628)
。。。。。。

解决方案

你传入的resourecid不对,要传你自己写的包含一个textview和imageview的那个布局的id。你传的是系统的android.R.layout.simple_list_item_1,这玩意儿就一个textview,而且id应该是text。没有imageview。所以是在image.setImageResource(fruit.getImageId());这里空指针。因为image没找到

解决方案二:

空指针报错,View view=LayoutInflater.from(getContext()).inflate(resourceId,null)终得resourecid没有指定吧

解决方案三:

com.IWIN.listview.FruitAdapter.getView(FruitAdapter.java:34)报错了。

  FruitAdapter adapter=new FruitAdapter(MainActivity.this,android.R.layout.simple_list_item_1,list);//在MainActivity里面的第二个参数不对,你要传递你自己的layout.

解决方案四:

convertView没赋值?

时间: 2024-10-29 05:17:17

listview-ListView 的问题,按照书上例子,仿写了一个,结果出问题了,请大家看看到底哪里出错了啊的相关文章

精通ios开发 第七...-精通iOS开发 第七版 第十四章 书上例子错误

问题描述 精通iOS开发 第七版 第十四章 书上例子错误 精通iOS开发 第7版 十四章 书上例子在Xcode7.2上运行不了!怎么改? 解决方案 在哪里买的书,赶快要求退货吧,噗次 解决方案二: 7.2的语法可能有更新了 你需要修正代码 毕竟书是对应老版本xcode

书上有句话:一个ASP.NET只能包含一个Form元素,而且必须包含一个Form元素???

问题描述 书上有句话:"一个ASP.NET只能包含一个Form元素,而且必须包含一个Form元素"是指每一个.aspx文件中,有且只能包含一个Form元素,还是说这个项目里所有的.aspx中只有一个asp.x里允许一个form元素,其它的asp.x里不允许出现Form元素?即如下图所示:图一对还是图二对? 解决方案 解决方案二: 当然是一个页面一个Form怎么可能所有文件只能有一个Form即使这么规定了,编译器也没法检测解决方案三: 带有runat="server"

c++问题-在acm上刷题老是通不过,求大神指点一二,到底问题出在哪里。不胜感激!!!

问题描述 在acm上刷题老是通不过,求大神指点一二,到底问题出在哪里.不胜感激!!! #include #include using namespace std; int main() { int T; int k,t=0; int i, j, n1, n2; char a[1010], b[1010], c[1015]; string d[20], e[20], f[20]; cin>>T; for(k=1; k<=T; k++) { cin>>a>>b; d[

编程-为什么安卓adt上运行我写的一个程序会提示“很抱歉,已停止运行”?

问题描述 为什么安卓adt上运行我写的一个程序会提示"很抱歉,已停止运行"? 如题,我写的一个下拉列表与OnItemSelectedListener事件的程序,编译是没问题的.然后run,在虚拟机中打开该程序就显示"很抱歉,xxxx已停止运行".我运行另一个就用一个TextView显示"HelloWord字符串"的就没问题. 请问这是怎么回事?应该怎么解决? 解决方案 看下日志,然后贴一下日志相关信息或者百度一下就知道了 解决方案二: 连上电脑运

一个jsp聊天室登陆(login.jsp)的错误问题(书上例子代码)

问题描述 这是原封不动导入到Myeclipse6.5里的代码,但是出错了,很奇怪,故咨询下各位,谢谢.<!--用page指令定义语言为java页面编码为utf-8--><%@pagelanguage="java"pageEncoding="utf-8"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head&g

吃午饭前,按书上的代码写会儿--Hunt the Wumpus第一个版本

有空就要慢慢练起~~~~脑袋动起来是很快乐的事儿....:) <易学PYTHON>演练一遍. from random import choice cave_numbers = range(1,21) wumpus_location = choice(cave_numbers) player_location = choice(cave_numbers) while player_location == wumpus_location: player_location = choice(cave

java小白求解,下面的代码是按照书上的例子抄下来的,不明白为什么报错。

问题描述 java小白求解,下面的代码是按照书上的例子抄下来的,不明白为什么报错. 代码如下:主要问题就是报错的地方:已经用注释吧报错贴上:还看不懂这个报错,求大神帮助:package Calendar; import java.util.Scanner; public class Calendar { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println(

怎么把图标添加到listview控件的表头行上?

问题描述 怎么把图标添加到listview控件的表头行上? 怎么把图标添加到listview控件的表头行上?怎么根据排序的不同在listview的表头上显示不同的图标? 解决方案 首先你要说明你的环境是什么? 是android中的listview还是window中的listview

新手怎么思考c语言书上的例子

问题描述 新手怎么思考c语言书上的例子 c语言新手一枚,自学中,现在很不熟练. 面对书上稍微复杂一点的例子, 脑子里就一团浆糊.所以昨天开始就试着在敲例子前画程序流程图.然后再敲,请问这种方法是对的吗?如果不是或者有什么要补充的麻烦给我讲一下,谢谢啦! 解决方案 最好找一个懂程序的人教你下.看下人家是怎么写程序的. 我见过一些初学者遇到的困难,是因为他们完全是根据书本上写好的程序在模仿.但是这有一个问题,就是看不到程序从无到有的过程. 好比根据烧好的菜去研究烹饪或者根据画好的画去学习素描,这都是