java–CustomArrayAdapter中的NullPointerException

java–CustomArrayAdapter中的NullPointerException,第1张

概述我正在尝试使用自定义数组适配器在片段中填充ListView.但是我在自定义数组适配器的getView()方法中的方法findViewById()上得到NullPointerException.这是CustomAdapter.java:packagegraph.prathya.com.materialdesign;importandroid.app.Activity;importandroid.content.C

我正在尝试使用自定义数组适配器在片段中填充ListVIEw.但是我在自定义数组适配器的getVIEw()方法中的方法findVIEwByID()上得到NullPointerException.

这是CustomAdapter.java:

package graph.prathya.com.materialdesign;import androID.app.Activity;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;/** * Created by Prathya on 5/19/2015. */   public class CustomAdapter extends ArrayAdapter<Post>{   Context context;   int layoutID,singlerowimgID= R.ID.imgIcon;   Post data[]=null;   public CustomAdapter(Context context, int layoutID, Post data[]){    super(context, layoutID);    this.layoutID = layoutID;    this.data = data;    this.context =context;}private class PostHolder{    ImageVIEw imgicon;    TextVIEw Title;}@OverrIDepublic int getCount(){    return data.length;}@OverrIDepublic VIEw getVIEw(int position, VIEw convertVIEw,VIEwGroup parent){    PostHolder holder;    LayoutInflater li = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);    if(convertVIEw == null){        li.inflate(layoutID,parent,false);        holder = new PostHolder();        holder.imgicon = (ImageVIEw)convertVIEw.findVIEwByID(singlerowimgID);        holder.Title =(TextVIEw)convertVIEw.findVIEwByID(R.ID.txtTitle);    }    else {        holder = (PostHolder)convertVIEw.getTag();    }    Post post = data[position];    holder.Title.setText(post.Title);    holder.imgicon.setimageResource(post.imgicon);    return convertVIEw;}}

这是我的XML文件,它定义了ListFragment中单行的外观
 singlerow.xml:

<?xml version="1.0" enCoding="utf-8"?><linearLayoutxmlns:androID="http://schemas.androID.com/apk/res/androID"androID:orIEntation="horizontal"androID:layout_wIDth="fill_parent"androID:layout_height="fill_parent"androID:padding="10dp"><ImageVIEw androID:ID="@+ID/imgIcon"    androID:layout_wIDth="wrap_content"    androID:layout_height="fill_parent"    androID:gravity="center_vertical"    androID:layout_alignParenttop="true"    androID:layout_alignParentBottom="true"    androID:layout_marginRight="15dp"    androID:layout_margintop="5dp"    androID:layout_marginBottom="5dp" /><TextVIEw androID:ID="@+ID/txtTitle"    androID:layout_wIDth="fill_parent"    androID:layout_height="fill_parent"    androID:gravity="center_vertical"    androID:layout_alignParenttop="true"    androID:layout_alignParentBottom="true"    androID:textStyle="bold"    androID:textSize="22dp"    androID:textcolor="#000000"    androID:layout_margintop="5dp"    androID:layout_marginBottom="5dp" />

这是我的Fragment类:
  Fragment1.java:

package graph.prathya.com.materialdesign;import androID.content.Context;import androID.os.Bundle;import androID.support.v4.app.Fragment;import androID.support.v4.app.ListFragment;import androID.vIEw.LayoutInflater;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androID.Widget.ListVIEw;/** * Created by Prathya on 5/19/2015. */public class Fragment1 extends ListFragment{  Post post[] = new Post[]{        new Post(R.drawable.passion,"Passion"),        new Post(R.drawable.event,"Event"),        new Post(R.drawable.project,"Project"),        new Post(R.drawable.groupstudy,"Group Study")};@OverrIDepublic VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container, Bundle savedInstanceState) {    return inflater.inflate(R.layout.fragment1,container,false);}@OverrIDepublic voID onActivityCreated(Bundle savedInstanceState) {    super.onActivityCreated(savedInstanceState);    setlistadapter(new CustomAdapter(getActivity(), R.layout.singlerow, post));} }

这是fragment1.xml

<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"androID:orIEntation="vertical" androID:layout_wIDth="match_parent"androID:layout_height="match_parent"androID:background="#ffaa00">    <ListVIEw    androID:layout_wIDth="match_parent"    androID:layout_height="wrap_content"    androID:ID="@androID:ID/List"    androID:layout_gravity="center_horizontal" />

这是Post.java

package graph.prathya.com.materialdesign;/** * Created by Prathya on 5/19/2015. */public class Post {public int imgicon;public String Title;public Post(){    super();}public Post(int imgicon, String Title){    this.imgicon = imgicon;    this.Title = Title;}}

这是MainActivity.java

package graph.prathya.com.materialdesign;import androID.app.FragmentTransaction;import androID.support.v4.app.FragmentManager;import androID.support.v7.app.ActionBaractivity;import androID.os.Bundle;import androID.vIEw.Menu;import androID.vIEw.MenuItem;public class MainActivity extends ActionBaractivity {    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.activity_main);    addframent();  }public voID addframent(){    FragmentManager fragmentManager = getSupportFragmentManager();    androID.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();    Fragment1 fm1 = new Fragment1();    fragmentTransaction.add(R.ID.sa,fm1);    fragmentTransaction.commit();}}

这是错误信息

05-19 19:26:13.362 18306-18306/graph.prathya.com.materialdesign
E/AndroIDRuntime﹕ FATAL EXCEPTION: main
Process: graph.prathya.com.materialdesign, PID: 18306
java.lang.NullPointerException: Attempt to invoke virtual method ‘androID.vIEw.VIEw androID.vIEw.VIEw.findVIEwByID(int)’ on a null
object reference
at graph.prathya.com.materialdesign.CustomAdapter.getVIEw(CustomAdapter.java:42)
at androID.Widget.AbsListVIEw.obtainVIEw(AbsListVIEw.java:2347)
at androID.Widget.ListVIEw.measureHeightOfChildren(ListVIEw.java:1270)
at androID.Widget.ListVIEw.onMeasure(ListVIEw.java:1182)
at androID.vIEw.VIEw.measure(VIEw.java:17554)

..

解决方法:

在CustomAdapter.java中,您必须为convertVIEw分配膨胀的布局:

convertVIEw = li.inflate(layoutID,parent,false);

更新:
您必须将持有者设置为新增加的视图:

covnertVIEw.setTag(holder);
总结

以上是内存溢出为你收集整理的java – CustomArrayAdapter中的NullPointerException全部内容,希望文章能够帮你解决java – CustomArrayAdapter中的NullPointerException所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1107920.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存