java - 多listView android

标签 java android adapter

我尝试创建多个 ListView,但我有 java.lang.NullPointerException。好像还行。

主要内容:

for(int i = 0; i < 10; i++) {
            ActivityObject ao = new ActivityObject();
            if(i%2 == 0) {
                ao.setType("0");
                ao.setTitle("Im null");
            } else {
                ao.setType("1");
                ao.setTitle("Im one");
            }

            dataActivity.add(ao);
        }

        ActivityAdapter adapter = new ActivityAdapter(getApplicationContext(), dataActivity);
        listActivity.setAdapter(adapter);

super 适配器

public class ActivityAdapter extends ArrayAdapter {

    private Context context;
    private ArrayList<ActivityObject> object;
    LayoutInflater vi;

    public ActivityAdapter(Context context, ArrayList<ActivityObject> object) {
        super(context, 0, object);

        this.context = context;
        this.object = object;

        vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

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

        ViewHolder holder = null;

        if(convertView == null) {

            if(object.get(position).equals("0")) {
                convertView = vi.inflate(R.layout.p_activity_detected, null);
                holder.textActivity = (TextView) convertView.findViewById(R.id.detected_text);
            }

            if(object.get(position).equals("1")) {
                convertView = vi.inflate(R.layout.p_activity_people, null);
                holder.textPeople = (TextView) convertView.findViewById(R.id.people_text);
            }

            holder = new ViewHolder();
            convertView.setTag(holder);

        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        //set text
        if(object.get(position).getType().equals("0")) {
            holder.textActivity.setText(object.get(position).getTitle());
        }

        if(object.get(position).getType().equals("1")) {
            holder.textPeople.setText(object.get(position).getTitle());
        }

        return convertView;
    }

    static class ViewHolder {
        public TextView textActivity;
        public TextView textPeople;
    }
}

错误

FATAL EXCEPTION: main
    java.lang.NullPointerException
            at adapters.ActivityAdapter.getView(ActivityAdapter.java:54)

这是线 convertView.setTag(holder);

最佳答案

用这些代码替换你的适配器

public class ActivityAdapter extends ArrayAdapter {

private Context context;
private ArrayList<ActivityObject> object;
LayoutInflater vi;

ViewHolder holder;

public ActivityAdapter(Context context, ArrayList<ActivityObject> object) {
    super(context, 0, object);

    this.context = context;
    this.object = object;

    vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

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

    holder = new ViewHolder();;

    if(convertView == null) {

        if(object.get(position).equals("0")) {
            convertView = vi.inflate(R.layout.p_activity_detected, null);
            holder.textActivity = (TextView) convertView.findViewById(R.id.detected_text);
        }

        if(object.get(position).equals("1")) {
            convertView = vi.inflate(R.layout.p_activity_people, null);
            holder.textPeople = (TextView) convertView.findViewById(R.id.people_text);
        }


        convertView.setTag(holder);

    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    //set text
    if(object.get(position).getType().equals("0")) {
        holder.textActivity.setText(object.get(position).getTitle());
    }

    if(object.get(position).getType().equals("1")) {
        holder.textPeople.setText(object.get(position).getTitle());
    }

    return convertView;
}

static class ViewHolder {
    public TextView textActivity;
    public TextView textPeople;
    }
   }

关于java - 多listView android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31804193/

相关文章:

java - PrintWriter 不会以 UTF-8 写入

java - 是否有用于将谓词定义为类似 SQL 的字符串的 Java 库?

android - 如何在 Microsoft Band 的自定义布局中创建图标?

mysql - MobileFirst 适配器 : JSON result order is different as that of the DB data position

java - Android:有没有办法将对象添加到微调器并仅显示它的一个属性?

java - Spring 批处理作业存储库表未在我配置的架构中创建

java - SunToolkit.awtLock : does code that takes such a lock needs to be called on the EDT

android - Strange gradle error Expected configuration (...) to contain exactly one file, 然而,它不包含任何文件

android - 如何在 Android 上滚动时在 RecyclerView 中加载更多数据

android - 根据自定义适配器中的条件更改特定行的背景