_wengwenwen 2015-03-29 07:10 采纳率: 0%
浏览 1884

list定义的变量一直为空。

这是我的代码:

package com.example.testview;

import java.util.ArrayList;
import java.util.List;



import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity {
    private ListView lv ;

    private List<person> persons;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        persons = new ArrayList<person>();
        ContentResolver cr =  this.getContentResolver();

        Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
        Uri uriData = Uri.parse("content://com.android.contacts/data");
        Cursor cursor = cr.query(uri, new String[] {"contact_id"}   , null, null, null);
        while(cursor.moveToNext()){
            String id = cursor.getString(0);
            if(id != null){
                Cursor  dataCursor = cr.query(uriData, new String[]{"data1","mimetype"}, "raw_contact_id=?", new String [] {id}, null);
                person per = new  person() ;
                while(dataCursor.moveToNext()){
                    String data = dataCursor.getString(0);
                    String mimetype =dataCursor.getString(1);
                    if("vnd.android.cursor.item/name".equals(mimetype)){
                        per.setName(data);
                    }else if ("vnd.android.cursor.item/phone_v2".equals(mimetype)){
                        per.setNumber(data);
                    }

                }
                dataCursor.close();
                persons.add(per);
            }


        }
        cursor.close();

        lv= (ListView) findViewById(R.id.lv);
        lv.setAdapter(new myAdtapter() );




    }
    private class myAdtapter extends BaseAdapter{

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return persons.size();
        }

        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return 0;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            person per =persons.get(position);
            View view = View.inflate(getApplicationContext(), R.layout.contect_view, null);
            TextView et_name = (TextView) findViewById(R.id.name);
            TextView et_number = (TextView) findViewById(R.id.number);

            et_name.setText(per.getName());
            et_number.setText(per.getNumber());
            return view;

        }

    }




}


我debug试了一下,发现persons一直没有显示,为空,就是说我每次传进去的数都没被写入persons,请指教。
抛出的是空指针异常

  • 写回答

2条回答 默认 最新

  • threenewbee 2015-03-29 07:43
    关注

    检查onCreate和while(cursor.moveToNext())循环有没有被执行。

    评论

报告相同问题?

悬赏问题

  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备