自定义适配器的问题

悍马

我试图使用自定义适配器扩展数组适配器,但是我得到了一个空指针异常在这里,我在发布我的代码,请检查一下

注意:我不应该使用XML

我的mainActivity是

package com.example.newslist;

import java.util.ArrayList;

import android.os.Bundle;
import android.app.Activity;
import android.util.DisplayMetrics;
import android.view.Menu;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.ListView;

public class MainActivity extends Activity {
DisplayMetrics dm = new DisplayMetrics();
public static int width,height;
public String text="1";
int image = R.drawable.ic_launcher;
public static ArrayList<ItemClass> listWithImage ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        width=dm.widthPixels;
        height = dm.widthPixels;
        listWithImage=new ArrayList<ItemClass>();


        LinearLayout mainLayout = new LinearLayout(this);
        mainLayout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
        mainLayout.setOrientation(LinearLayout.VERTICAL);
        setContentView(mainLayout);

        ListView list1 = new ListView(this);


        ItemClass item = new ItemClass(text, image);
        listWithImage.add(item);
        list1.setAdapter(new CustomAdapter(MainActivity.this,listWithImage));
        list1.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, (int) (height*0.4)));
        mainLayout.addView(list1);
        }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

我的自定义适配器是

package com.example.newslist;

import java.util.List;

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

public class CustomAdapter extends ArrayAdapter<ItemClass>{
    Context ctx;
    static LinearLayout CustomLayout;
    static TextView Name;       
    ImageView Image;
    public CustomAdapter(Context context, List<ItemClass> objects) {
        super(context, CustomLayout.getId(),Name.getId(), objects);
        // TODO Auto-generated constructor stub
    }

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

        final ItemClass list = this.getItem(position);

    CustomLayout = new LinearLayout(ctx);
    CustomLayout.setId(2);
    CustomLayout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT));
    CustomLayout.setOrientation(LinearLayout.VERTICAL);

    Image = new ImageView(ctx);
    Image.setLayoutParams(new LayoutParams((int) (MainActivity.width*0.006),(int )(MainActivity.height*0.006)));
    Image.setImageResource(R.drawable.ic_launcher);
    CustomLayout.addView(Image);

    Name = new TextView(ctx);
    Name.setId(1);
    Name.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    Name.setPadding((int) (MainActivity.width*0.0005),(int )(MainActivity.height*0.0005),(int) (MainActivity.width*0.0005),(int )(MainActivity.height*0.0005));
    CustomLayout.addView(Name);

    Image.setImageResource(list.getImage());
    Name.setText(""+list.getName());

    return CustomLayout;




    }


}

我的物品类别是

package com.example.newslist;

public class ItemClass {
    public int imageId;
    private String name;
    public ItemClass(String text, int image)
    {
        this.name = text;
        this.imageId = image;
    }
    public String getName()
    {
        return name;
    }
    public int getImage()
    {
        return imageId;
    }

}
SathMK

为其赋值之前,请先访问Textview名称这将导致空指针异常。代替Name.getId()指定自定义布局的资源ID,例如R.layout.CUSTOM_LAYOUT
Context ctx没有得到任何分配的值,它将导致空指针异常。试试下面的代码

public class CustomAdapter extends ArrayAdapter<ItemClass>{
Context ctx;
static LinearLayout CustomLayout;
static TextView Name;       
ImageView Image;
public CustomAdapter(Context context, List<ItemClass> objects) {
    super(context, CustomLayout.getId(),R.layout.custom_adapter_view, objects);
    ctx = context;
}

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

    final ItemClass list = objects.getItem(position);

CustomLayout = new LinearLayout(ctx);
CustomLayout.setId(2);
CustomLayout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT));
CustomLayout.setOrientation(LinearLayout.VERTICAL);

Image = new ImageView(ctx);
Image.setLayoutParams(new LayoutParams((int) (MainActivity.width*0.006),(int )(MainActivity.height*0.006)));
Image.setImageResource(R.drawable.ic_launcher);
CustomLayout.addView(Image);

Name = new TextView(ctx);
Name.setId(1);
Name.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
Name.setPadding((int) (MainActivity.width*0.0005),(int )(MainActivity.height*0.0005),(int) (MainActivity.width*0.0005),(int )(MainActivity.height*0.0005));
CustomLayout.addView(Name);

Image.setImageResource(list.getImage());
Name.setText(""+list.getName());

return CustomLayout;




}

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ListView的自定义适配器

来自分类Dev

自定义ListView的适配器

来自分类Dev

具有自定义适配器多选问题的android listview

来自分类Dev

在Android的“自定义适配器”中设置Textview的文本时出现问题

来自分类Dev

ListFragment和自定义适配器问题(不显示)

来自分类Dev

遇到无法加载自定义适配器工厂的问题

来自分类Dev

滚动列表视图和自定义适配器的问题

来自分类Dev

Android Java:用于滚动和过滤问题的列表视图的自定义适配器

来自分类Dev

具有基本适配器列表项的自定义适配器重复

来自分类Dev

片段中的自定义阵列适配器

来自分类Dev

Android自定义适配器如何工作?

来自分类Dev

更新Recyclerview的自定义适配器的ViewHolder值

来自分类Dev

从自定义适配器更新menuItem图标

来自分类Dev

为什么自定义适配器需要资源?

来自分类Dev

android:带有自定义适配器的AutoCompleteTextView

来自分类Dev

使用自定义适配器的Android数据绑定

来自分类Dev

Android自定义阵列适配器未运行

来自分类Dev

自定义适配器不显示数据

来自分类Dev

Emberjs-自定义适配器

来自分类Dev

如何从自定义基本适配器调用函数

来自分类Dev

ListView自定义适配器丢失imageView

来自分类Dev

带自定义适配器的NPE

来自分类Dev

如何在Android中自定义适配器?

来自分类Dev

Android DataBinding自定义绑定适配器警告

来自分类Dev

Android从适配器自定义类调用findViewById

来自分类Dev

自定义适配器显示RuntimeException-ListView

来自分类Dev

使用自定义适配器过滤ListView

来自分类Dev

自定义listview适配器上的OnclickListner

来自分类Dev

navDrawer的自定义菜单适配器?

Related 相关文章

热门标签

归档