Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 多联系人选择器在低于17的Android api级别下不工作_Java_Android_Android Contacts_Custom Adapter_Contactpicker - Fatal编程技术网

Java 多联系人选择器在低于17的Android api级别下不工作

Java 多联系人选择器在低于17的Android api级别下不工作,java,android,android-contacts,custom-adapter,contactpicker,Java,Android,Android Contacts,Custom Adapter,Contactpicker,我有一个代码可以从内置的电话联系人中读取联系人,并在我的应用程序的列表视图中显示所有联系人。用户可以选择多个联系人并在其他活动中显示它们。 此代码在Android API级别18及以上的版本中运行良好,但在API级别18以下的版本中会出现错误 我正在附加联系人选取器活动及其适配器的代码 private void getSelectedContacts(){ //TODO自动生成的方法存根 StringBuffer sb=新的StringBuffer(); dataBase=mHelper.ge

我有一个代码可以从内置的电话联系人中读取联系人,并在我的应用程序的列表视图中显示所有联系人。用户可以选择多个联系人并在其他活动中显示它们。 此代码在Android API级别18及以上的版本中运行良好,但在API级别18以下的版本中会出现错误

我正在附加联系人选取器活动及其适配器的代码

private void getSelectedContacts(){
//TODO自动生成的方法存根
StringBuffer sb=新的StringBuffer();
dataBase=mHelper.getWritableDatabase();
ContentValues=新的ContentValues();
for(ContactObject bean:ContactsListClass.phoneList){
if(bean.isSelected()){
sb.append(bean.getName());
sb.append(bean.getNumber());
某人附加(“1”);
value.put(DbHelper.KEY_FNAME,bean.getName());
value.put(DbHelper.KEY_LNAME,bean.getNumber());
value.put(DbHelper.KEY_INVITE,“1”);
insert(DbHelper.TABLE_NAME,null,value);
}
}
close()数据库;
字符串s=sb.toString().trim();
如果(TextUtils.isEmpty){
Toast.makeText(上下文,“选择至少一个联系人”,
吐司。长度(短)。show();
}否则{
s=s.substring(0,s.length()-1);
/**
Toast.makeText(上下文,“选定联系人:+s,
吐司。长度(短)。show();
**/
意向i=新意向(联系_main.this,MainActivity.class);
i、 putExtra(“名称”,名称);
i、 putExtra(“EVT_名称”,事件名称);
i、 putExtra(“EVT_日期”,事件_日期);
星触觉(i);
}
}
私有void addContactsInList(){
//TODO自动生成的方法存根
线程线程=新线程(){
@凌驾
公开募捐{
showPB();
试一试{
Cursor=getContentResolver().query(
ContactsContract.CommonDataTypes.Phone.CONTENT\u URI,
空,空,空,空);
试一试{
ContactsListClass.phoneList.clear();
}捕获(例外e){
}
while(phones.moveToNext()){
字符串phoneName=电话
.getString(电话)
.getColumnIndex(ContactsContract.CommonDataTypes.Phone.DISPLAY_NAME));
字符串phoneNumber=电话
.getString(电话)
.getColumnIndex(ContactsContract.CommonDataTypes.Phone.NUMBER));
字符串phoneImage=电话
.getString(电话)
.getColumnIndex(ContactsContract.CommonDataTypes.Phone.CONTACT_ID));
//字符串pImage=
ContactObject cp=新的ContactObject();
cp.setName(phoneName);
cp.setNumber(电话号码);
cp.setImage(phoneImage);
//cp.setImage(getResources(R.drawable.prof_active));
ContactsListClass.phoneList.add(cp);
}
电话。关闭();
lv=新列表视图(上下文);
lv.setDividerHeight(0);
lv.setDivider(空);
lv.setLayoutParams(新的LayoutParams(
LayoutParams.MATCH_父级,
LayoutParams.MATCH_PARENT));
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
//TODO自动生成的方法存根
llContainer.addView(lv);
}
});
Collections.sort(ContactsListClass.phoneList,
新比较器(){
@凌驾
公共整数比较(ContactObject lhs,
联系人对象(rhs){
返回lhs.getName().compareTo(
getName());
}
});
objAdapter=新的触点dapter(Contacts_main.this,
ContactsListClass.phoneList);
lv.setAdapter(objAdapter);//此处显示错误
lv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共无效MClick(AdapterView父级、,
视图、整型位置、长id){
复选框chk=(复选框)视图
.findviewbyd(R.id.contactcheck);
ContactObject bean=ContactsListClass.phoneList
.获得(职位);
if(bean.isSelected()){
bean.setSelected(false);
chk.setChecked(假);
}否则{
bean.setSelected(true);
chk.setChecked(真);
}
}
});
}捕获(例外e){
//e.printStackTrace();
//Toast.makeText(上下文“崩溃”,Toast.LENGTH_SHORT).show();
}
hidePB();
}
};
星星
private void getSelectedContacts() {
        // TODO Auto-generated method stub

        StringBuffer sb = new StringBuffer();
        dataBase=mHelper.getWritableDatabase();
        ContentValues values=new ContentValues();
        for (ContactObject bean : ContactsListClass.phoneList) {
            if (bean.isSelected()) {
                sb.append(bean.getName());
                sb.append(bean.getNumber());
                sb.append("1");

                values.put(DbHelper.KEY_FNAME,bean.getName());
                values.put(DbHelper.KEY_LNAME,bean.getNumber() );
                values.put(DbHelper.KEY_INVITE,"1" );
                dataBase.insert(DbHelper.TABLE_NAME, null, values);
            }
        }

        dataBase.close();

        String s = sb.toString().trim();

        if (TextUtils.isEmpty(s)) {
            Toast.makeText(context, "Select atleast one Contact",
                    Toast.LENGTH_SHORT).show();
        } else {

            s = s.substring(0, s.length() - 1);

            /**

            Toast.makeText(context, "Selected Contacts : " + s,
                    Toast.LENGTH_SHORT).show();
            **/
            Intent i = new Intent(Contacts_main.this, MainActivity.class);
            i.putExtra("NAME", name);
            i.putExtra("EVT_Name", event_name);
            i.putExtra("EVT_Date", event_date);
            startActivity(i);


        }



    }

    private void addContactsInList() {
        // TODO Auto-generated method stub

        Thread thread = new Thread() {
            @Override
            public void run() {

                showPB();

                try {

                    Cursor phones = getContentResolver().query(
                            ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                            null, null, null, null);

                    try {
                        ContactsListClass.phoneList.clear();
                    } catch (Exception e) {

                    }

                    while (phones.moveToNext()) {
                        String phoneName = phones
                                .getString(phones
                                        .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                        String phoneNumber = phones
                                .getString(phones
                                        .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                        String phoneImage = phones
                                .getString(phones
                                        .getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID));

                        //String pImage =  

                        ContactObject cp = new ContactObject();



                        cp.setName(phoneName);
                        cp.setNumber(phoneNumber);
                        cp.setImage(phoneImage);
                        //cp.setImage(getResources(R.drawable.prof_active));

                        ContactsListClass.phoneList.add(cp);

                    }
                    phones.close();

                    lv = new ListView(context);
                    lv.setDividerHeight(0);
                    lv.setDivider(null);

                    lv.setLayoutParams(new LayoutParams(
                            LayoutParams.MATCH_PARENT,
                            LayoutParams.MATCH_PARENT));

                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            // TODO Auto-generated method stub
                            llContainer.addView(lv);
                        }
                    });

                    Collections.sort(ContactsListClass.phoneList,
                            new Comparator<ContactObject>() {
                                @Override
                                public int compare(ContactObject lhs,
                                        ContactObject rhs) {
                                    return lhs.getName().compareTo(
                                            rhs.getName());
                                }
                            });

                    objAdapter = new ContactsAdapter(Contacts_main.this,
                            ContactsListClass.phoneList);
                    lv.setAdapter(objAdapter); //ERROR SHOWING HERE
                    lv.setOnItemClickListener(new OnItemClickListener() {

                        @Override
                        public void onItemClick(AdapterView<?> parent,
                                View view, int position, long id) {

                            CheckBox chk = (CheckBox) view
                                    .findViewById(R.id.contactcheck);

                            ContactObject bean = ContactsListClass.phoneList
                                    .get(position);
                            if (bean.isSelected()) {
                                bean.setSelected(false);
                                chk.setChecked(false);
                            } else {
                                bean.setSelected(true);
                                chk.setChecked(true);
                            }

                        }
                    });

                } catch (Exception e) {

                 //   e.printStackTrace();
                    //Toast.makeText(context, "Crash",Toast.LENGTH_SHORT).show();


                }

                hidePB();

            }
        };
        thread.start();

    }
Context mContext;
    LayoutInflater inflater;
    private List<ContactObject> mainDataList = null;
    private List<ContactObject> mainInviteesList = null;
    private ArrayList<ContactObject> arraylist;
    private DbHelper mHelper;
    private SQLiteDatabase dataBase;


    public ContactsAdapter(Context context, List<ContactObject> mainDataList) {

        mContext = context;

        this.mainDataList = mainDataList;
        inflater = LayoutInflater.from(mContext);
        this.arraylist = new ArrayList<ContactObject>();
        this.arraylist.addAll(mainDataList);
        mHelper=new DbHelper(context);



    }

    static class ViewHolder {
        protected TextView name;
        protected TextView number;
        protected CheckBox check;
        protected ImageView image;
        protected EditText invitees;
    }

    @Override
    public int getCount() {
        return mainDataList.size();
    }

    @Override
    public ContactObject getItem(int position) {
        return mainDataList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    public View getView(final int position, View view, ViewGroup parent) {
        final ViewHolder holder;
        if (view == null) {
            holder = new ViewHolder();
            view = inflater.inflate(R.layout.list_row, null);

            holder.name = (TextView) view.findViewById(R.id.contactname);
            holder.number = (TextView) view.findViewById(R.id.contactno);

            holder.check = (CheckBox) view.findViewById(R.id.contactcheck);

            holder.image = (ImageView) view.findViewById(R.id.contactimage);

            holder.invitees = (EditText) view.findViewById(R.id.editInvites);

            view.setTag(holder);
            view.setTag(R.id.contactname, holder.name);
            view.setTag(R.id.contactno, holder.number);
            view.setTag(R.id.contactcheck, holder.check);
            view.setTag(R.id.editInvites, holder.invitees);

            holder.check
                    .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

                        @Override
                        public void onCheckedChanged(CompoundButton vw,
                                boolean isChecked) {

                            int getPosition = (Integer) vw.getTag();
                            mainDataList.get(getPosition).setSelected(
                                    vw.isChecked());
                    /**        

                            dataBase=mHelper.getWritableDatabase();
                            ContentValues values=new ContentValues();
                            values.put(DbHelper.KEY_FNAME,mainDataList.get(getPosition).getName());
                            values.put(DbHelper.KEY_LNAME,mainDataList.get(getPosition).getNumber());
                            values.put(DbHelper.KEY_INVITE,"1" );
                            dataBase.insert(DbHelper.TABLE_NAME, null, values);


                    dataBase.close();

                    **/

                        }
                    });

           // holder.invitees.addTextChangedListener(watcher);


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

        holder.check.setTag(position);
        //holder.invitees.setTag(position);

        holder.name.setText(mainDataList.get(position).getName());
        holder.number.setText(mainDataList.get(position).getNumber());




        if(getByteContactPhoto(mainDataList.get(position).getImage())==null){
            holder.image.setImageResource(R.drawable.prof_active);
        }else{
            holder.image.setImageBitmap(getByteContactPhoto(mainDataList.get(position).getImage()));
        }



        holder.check.setChecked(mainDataList.get(position).isSelected());

        return view;
    }

    public void filter(String charText) {
        charText = charText.toLowerCase(Locale.getDefault());
        mainDataList.clear();
        if (charText.length() == 0) {
            mainDataList.addAll(arraylist);
        } else {
            for (ContactObject wp : arraylist) {
                if (wp.getName().toLowerCase(Locale.getDefault())
                        .contains(charText)) {
                    mainDataList.add(wp);
                }
            }
        }
        notifyDataSetChanged();
    }

    public Bitmap getByteContactPhoto(String contactId) {
        Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, Long.parseLong(contactId));
        Uri photoUri = Uri.withAppendedPath(contactUri, Contacts.Photo.CONTENT_DIRECTORY);
        Cursor cursor = mContext.getContentResolver().query(photoUri,
                        new String[] {Contacts.Photo.DATA15}, null, null, null);
        if (cursor == null) {
            return null;
        }
        try {
            if (cursor.moveToFirst()) {
                byte[] data = cursor.getBlob(0);
                if (data != null) {
                    return BitmapFactory.decodeStream( new ByteArrayInputStream(data));
                }
            }
        } finally {
            cursor.close();
        }

        return null;
        }

}