Android 如何删除从手机中获取所有联系人详细信息和所有图像时的outofmemory错误

Android 如何删除从手机中获取所有联系人详细信息和所有图像时的outofmemory错误,android,Android,这是我在运行这些联系人应用程序时遇到的关于内存不足的问题。 我认为这些错误是由于图像造成的 在emulator和bluestacjk中,这段代码可以正常工作,但在安装到mobile之后,内存不足 这段代码是关于在适配器的帮助下从listview中填充的手机中获取带有图像的联系人详细信息,但在手机中不起作用 import android.app.AlertDialog; import android.content.ContentResolver; import android.

这是我在运行这些联系人应用程序时遇到的关于内存不足的问题。 我认为这些错误是由于图像造成的

在emulator和bluestacjk中,这段代码可以正常工作,但在安装到mobile之后,内存不足

这段代码是关于在适配器的帮助下从listview中填充的手机中获取带有图像的联系人详细信息,但在手机中不起作用

 import android.app.AlertDialog;
    import android.content.ContentResolver;
    import android.app.ProgressDialog;
    import android.content.ContentUris;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.content.res.Resources;
    import android.database.Cursor;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.net.Uri;
    import android.os.Bundle;
    import android.provider.ContactsContract;
    import android.support.v4.app.Fragment;
    import android.support.v7.app.ActionBar;
    import android.support.v7.app.ActionBarActivity;
    import android.support.v7.widget.Toolbar;
    import android.text.Editable;
    import android.text.TextWatcher;
    import android.util.SparseBooleanArray;
    import android.view.ActionMode;
    import android.view.LayoutInflater;
    import android.view.Menu;
    import android.view.MenuInflater;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.AbsListView;
    import android.widget.ArrayAdapter;
    import android.widget.EditText;
    import android.widget.ImageView;
    import android.widget.ListView;
    import android.widget.SearchView;
    import android.widget.TextView;
    import android.widget.Toast;
    import com.example.admin.business_app.R;
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    import java.util.Locale;

    /**
     * Created by admin on 3/15/2016.
     */
    public class Contact_list extends Fragment {

        // Declare Variables
        ListView contactlistview;
        ListViewAdapter listviewadapter;
        List<WorldPopulation> worldpopulationlist = new ArrayList<WorldPopulation>();
        Context context;
        String[] name;
        String[] phoneno;
        ProgressDialog loading;
        long contact_id;
        Bitmap image;
        Toolbar mToolbar;
        EditText search_text;
        //EditText editsearch;


        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

            View rootview = inflater.inflate(R.layout.listview_main, container, false);
            {
                super.onCreate(savedInstanceState);
                // Get the view from listview_main.xml

                //ActionBar actionBar = getSupportActionBar();
    //        mToolbar = (Toolbar) findViewById(R.id.contacts_toolbar);
    //        mToolbar.setTitle("Group");
                // setSupportActionBar(mToolbar);
                contactlistview = (ListView) rootview.findViewById(R.id.listview);
                search_text = (EditText) rootview.findViewById(R.id.search);
                search_text.addTextChangedListener(new TextWatcher() {


                    public void afterTextChanged(Editable arg0) {
                        // TODO Auto-generated method stub

                        String text = search_text.getText().toString().toLowerCase(Locale.getDefault());
                        listviewadapter.filter(text);
                    }

                    @Override
                    public void beforeTextChanged(CharSequence arg0, int arg1,
                                                  int arg2, int arg3) {
                        // TODO Auto-generated method stub
                    }

                    @Override
                    public void onTextChanged(CharSequence arg0, int arg1, int arg2,
                                              int arg3) {
                        // TODO Auto-generated method stub
                    }
                });

                // Generate sample data into string array
                Cursor phones = getActivity().getContentResolver().query(
                        ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,
                        null, null);
                while (phones.moveToNext()) {

                    String name = phones
                            .getString(phones
                                    .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));

                    String phoneNumber = phones
                            .getString(phones
                                    .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                    contact_id = phones.getLong(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID));


                    image = getFacebookPhoto(contact_id);

                    System.out.println("value of contacts id is :" + contact_id);
                    WorldPopulation objContact = new WorldPopulation();
                    objContact.setName(name);
                    objContact.setPhoneno(phoneNumber);
                    objContact.setPhoto(image);
                    worldpopulationlist.add(objContact);

                }
                phones.close();
                listviewadapter = new ListViewAdapter(getActivity(), R.layout.listview_item,
                        worldpopulationlist);
                if (null != worldpopulationlist && worldpopulationlist.size() != 0) {
                    Collections.sort(worldpopulationlist, new Comparator<WorldPopulation>() {

                        public int compare(WorldPopulation lhs, WorldPopulation rhs) {
                            return lhs.getName().compareTo(rhs.getName());
                        }
                    });
                    AlertDialog alert = new AlertDialog.Builder(
                            getActivity()).create();
                    alert.setTitle("");
                    alert.setMessage(worldpopulationlist.size() + " Contact Found!!!");
                    alert.setButton("OK", new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();
                        }
                    });
                    alert.show();

                } else {
                    showToast("No Contact Found!!!");
                }        // Binds the Adapter to the ListView


                contactlistview.setAdapter(listviewadapter);
                contactlistview.setTextFilterEnabled(true);
                contactlistview.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
                // Capture ListView item click
                contactlistview.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() {

                    @Override
                    public void onItemCheckedStateChanged(ActionMode mode,
                                                          int position, long id, boolean checked) {
                        // Capture total checked items
                        final int checkedCount = contactlistview.getCheckedItemCount();
                        // Set the CAB title according to total checked items
                        mode.setTitle(checkedCount + " Selected");
                        // Calls toggleSelection method from ListViewAdapter Class
                        listviewadapter.toggleSelection(position);
                    }

                    @Override
                    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
                        switch (item.getItemId()) {

                            case R.id.selectAll:
                                final int checkedCount = worldpopulationlist.size();
                                listviewadapter.removeSelection();
                                for (int i = 0; i < checkedCount; i++) {
                                    contactlistview.setItemChecked(i, true);

                                }
                                mode.setTitle(checkedCount + "  Selected");
                                listviewadapter.notifyDataSetChanged();
                                return true;


                            case R.id.delete:
                                // Calls getSelectedIds method from ListViewAdapter Class
                                SparseBooleanArray selected = listviewadapter
                                        .getSelectedIds();
                                // Captures all selected ids with a loop
                                for (int i = (selected.size() - 1); i >= 0; i--) {
                                    if (selected.valueAt(i)) {
                                        WorldPopulation selecteditem = listviewadapter
                                                .getItem(selected.keyAt(i));
                                        // Remove selected items following the ids
                                        listviewadapter.remove(selecteditem);
                                        Toast.makeText(getActivity(), "delete sucesdfully", Toast.LENGTH_SHORT).show();
                                    }
                                }
                                // Close CAB
                                mode.finish();
                                listviewadapter.notifyDataSetChanged();
                                return true;
                            default:
                                return false;
                        }
                    }

                    @Override
                    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
                        mode.getMenuInflater().inflate(R.menu.contextualmenu, menu);
                        return true;
                    }

                    @Override
                    public void onDestroyActionMode(ActionMode mode) {
                        // TODO Auto-generated method stub

                    }

                    @Override
                    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
                        // TODO Auto-generated method stub
                        return false;
                    }
                });
            }
            return rootview;
        }

        private void showToast(String msg)
        {
            Toast.makeText(getActivity(), msg, Toast.LENGTH_SHORT).show();

        }


        public boolean onCreateOptionsMenu(Menu menu)
        {
            getActivity().getMenuInflater().inflate(R.menu.menu1, menu);
            //final MenuItem item = menu.findItem(R.id.menu_item_search);
            //final android.support.v7.widget.SearchView searchView = (android.support.v7.widget.SearchView) MenuItemCompat.getActionView(item);

    //      MenuItemCompat.setOnActionExpandListener(item, new MenuItemCompat.OnActionExpandListener() {
    //          @Override
    //          public boolean onMenuItemActionCollapse(MenuItem item) {
    //              // Do something when collapsed
    //              listviewadapter.setFilter(worldpopulationlist);
    //              return true; // Return true to collapse action view
    //          }
    //
    //          @Override
    //          public boolean onMenuItemActionExpand(MenuItem item) {
    //              // Do something when expanded
    //              return true; // Return true to expand action view
    //          }
    //      });

            // Locate the EditText in menu.xml
    //      editsearch = (EditText) menu.findItem(R.id.menu_item_search).getActionView();
    //
    //      // Capture Text in EditText
    //      editsearch.addTextChangedListener(textWatcher);
    //
    //      // Show the search menu item in menu.xml
    //      MenuItem menuSearch = menu.findItem(R.id.menu_item_search);
    //
    //      menuSearch.setOnActionExpandListener(new MenuItem.OnActionExpandListener()
    //      {
    //
    //          // Menu Action Collapse
    //          @Override
    //          public boolean onMenuItemActionCollapse(MenuItem item) {
    //              // Empty EditText to remove text filtering
    //              editsearch.setText("");
    //              editsearch.clearFocus();
    //              return true;
    //          }
    //
    //          // Menu Action Expand
    //          @Override
    //          public boolean onMenuItemActionExpand(MenuItem item) {
    //              // Focus on EditText
    //              editsearch.requestFocus();
    //
    //              // Force the keyboard to show on EditText focus
    //              InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    //              imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
    //              return true;
    //          }
    //      });
    //
    //      // Show the settings menu item in menu.xml
    //      MenuItem menuSettings = menu.findItem(R.id.action_setting);
    //
    //      // Capture menu item clicks
    //      menuSettings.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener()
    //      {
    //
    //          @Override
    //          public boolean onMenuItemClick(MenuItem item) {
    //              // TODO Auto-generated method stub
    //              // Do something here
    //              Toast.makeText(getApplicationContext(), "Nothing here!",
    //                      Toast.LENGTH_LONG).show();
    //              return false;
    //          }
    //
    //      });







            return true;


        }
    //  private TextWatcher textWatcher = new TextWatcher()
    //  {
    //
    //      @Override
    //      public void afterTextChanged(Editable s) {
    //          // TODO Auto-generated method stub
    //          String text = editsearch.getText().toString()
    //                  .toLowerCase(Locale.getDefault());
    //          listviewadapter.filter(text);
    //      }
    //
    //      @Override
    //      public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
    //                                    int arg3) {
    //          // TODO Auto-generated method stub
    //
    //      }
    //
    //      @Override
    //      public void onTextChanged(CharSequence arg0, int arg1, int arg2,
    //                                int arg3) {
    //          // TODO Auto-generated method stub
    //
    //      }
    //
    //  };
    //  @Override
    //  public boolean onQueryTextChange(String newText) {
    //      final List<WorldPopulation> filteredModelList = filter(worldpopulationlist, newText);
    //      listviewadapter.setFilter(filteredModelList);
    //      return true;
    //  }
    //
    //  @Override
    //  public boolean onQueryTextSubmit(String query)
    //  {
    //      return false;
    //  }
    //
    //  private List<WorldPopulation> filter(List<WorldPopulation> models, String query)
    //  {
    //      query = query.toLowerCase();
    //
    //      final List<WorldPopulation> filteredModelList = new ArrayList<>();
    //      for (WorldPopulation model : models) {
    //          final String text = model.getName().toLowerCase();
    //          if (text.contains(query))
    //          {
    //              filteredModelList.add(model);
    //          }
    //      }
    //      return filteredModelList;
    //  }


        public void Refresh_listview() {
    //      loading =ProgressDialog.show(MainActivity.this, "Updating", "Please wait...", false, false);
    //      loading.show();
            listviewadapter.notifyDataSetChanged();
        }






        @Override
        public boolean onOptionsItemSelected(MenuItem item)
        {
            switch (item.getItemId())
            {
                case R.id.refresh:
                    //Refresh_listview();
                    return true;
                case R.id.menu_item_search:
                    Toast.makeText(getActivity(),"click on it",Toast.LENGTH_SHORT).show();
            }
            return super.onOptionsItemSelected(item);
        }






        public Bitmap getFacebookPhoto(long contacsid)
        {
            System.out.println("value of  conatcts id is in facebook funtion:"+contacsid);
            Uri contactUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, contacsid);
            Uri photoUri = Uri.withAppendedPath(contactUri, ContactsContract.Contacts.Photo.PHOTO);
            ContentResolver cr = getActivity().getContentResolver();
            Cursor contact = cr.query(photoUri,new String[] { ContactsContract.Contacts._ID }, null, null, null);

            if (contact.moveToFirst()) {
                //long userId = contact.getLong(contact.getColumnIndex(ContactsContract.Contacts._ID));
                photoUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, contacsid);

            }
            else {
                Bitmap defaultPhoto = decodeSampledBitmapFromResource(getResources(), R.drawable.default_contact_image, 100, 100);
                        //decodeResource(getResources(), R.drawable.default_contact_image);
                return defaultPhoto;
            }
            if (photoUri != null)
            {
                InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(cr, photoUri);
                if (input != null)
                {
                    return BitmapFactory.decodeStream(input);
                }
            } else
            {
                Bitmap defaultPhoto = decodeSampledBitmapFromResource(getResources(), R.drawable.default_contact_image, 100, 100);
                       // decodeResource(getResources(), R.drawable.default_contact_image);
                return defaultPhoto;
            }
            Bitmap defaultPhoto = decodeSampledBitmapFromResource(getResources(), R.drawable.default_contact_image, 100, 100);
                    //decodeResource(getResources(), R.drawable.default_contact_image);
            return defaultPhoto;
        }
        public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId,
                                                             int reqWidth, int reqHeight)
        {

            // First decode with inJustDecodeBounds=true to check dimensions
            final BitmapFactory.Options options = new BitmapFactory.Options();
            options.inJustDecodeBounds = true;
            BitmapFactory.decodeResource(res, resId, options);

            // Calculate inSampleSize
            options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);

            // Decode bitmap with inSampleSize set
            options.inJustDecodeBounds = false;
            return BitmapFactory.decodeResource(res, resId, options);
        }
        public static int calculateInSampleSize(
                BitmapFactory.Options options, int reqWidth, int reqHeight) {
            // Raw height and width of image
            final int height = options.outHeight;
            final int width = options.outWidth;
            int inSampleSize = 1;

            if (height > reqHeight || width > reqWidth) {

                final int halfHeight = height / 2;
                final int halfWidth = width / 2;

                // Calculate the largest inSampleSize value that is a power of 2 and keeps both
                // height and width larger than the requested height and width.
                while ((halfHeight / inSampleSize) > reqHeight
                        && (halfWidth / inSampleSize) > reqWidth) {
                    inSampleSize *= 2;
                }
            }

            return inSampleSize;
        }

















    }


        class ListViewAdapter extends ArrayAdapter<WorldPopulation>
        {
            // Declare Variables
            Context context;
            LayoutInflater inflater;
            List<WorldPopulation> worldpopulationlist;
            private SparseBooleanArray mSelectedItemsIds;
            private ArrayList<WorldPopulation> arraylist;
            int xDim,yDim;

            public ListViewAdapter(Context context, int resourceId,
                                   List<WorldPopulation> worldpopulationlist) {
                super(context, resourceId, worldpopulationlist);
                mSelectedItemsIds = new SparseBooleanArray();
                this.context = context;
                this.worldpopulationlist = worldpopulationlist;
                this.arraylist = new ArrayList<WorldPopulation>();
                this.arraylist.addAll(worldpopulationlist);
                inflater = LayoutInflater.from(context);
            }

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

            @Override
            public WorldPopulation getItem(int position) {
                return worldpopulationlist.get(position);
            }

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


            private class ViewHolder
            {
                TextView name;
                TextView phoneno;
                ImageView personphoto;

            }

            public View getView(final int position, View view, ViewGroup parent) throws IndexOutOfBoundsException {
                final ViewHolder holder;
                if (view == null)
                {
                    holder = new ViewHolder();
                    view = inflater.inflate(R.layout.listview_item, null);
                    // Locate the TextViews in listview_item.xml
                    holder.name = (TextView) view.findViewById(R.id.contactname);
                    holder.phoneno = (TextView) view.findViewById(R.id.contactphone);
                    holder.personphoto = (ImageView) view.findViewById(R.id.contactsimages);

                    view.setTag(holder);
                } else {
                    holder = (ViewHolder) view.getTag();
                }
                // Capture position and set to the TextViews
                holder.name.setText(worldpopulationlist.get(position).getName());
                holder.phoneno.setText(worldpopulationlist.get(position).getPhoneno());
                holder.personphoto.setImageBitmap(worldpopulationlist.get(position).getPhoto());


                return view;
            }


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

            @Override
            public void remove(WorldPopulation object)
            {
                worldpopulationlist.remove(object);
                notifyDataSetChanged();
            }

            public List<WorldPopulation> getWorldPopulation()
            {
                return worldpopulationlist;
            }

            public void toggleSelection(int position) {
                selectView(position, !mSelectedItemsIds.get(position));
            }

            public void removeSelection()
            {
                mSelectedItemsIds = new SparseBooleanArray();
                notifyDataSetChanged();
            }

            public void selectView(int position, boolean value) {
                if (value)
                    mSelectedItemsIds.put(position, value);
                else
                    mSelectedItemsIds.delete(position);
                notifyDataSetChanged();
            }

            public int getSelectedCount()
            {
                return mSelectedItemsIds.size();
            }

            public SparseBooleanArray getSelectedIds() {
                return mSelectedItemsIds;
            }
            // Filter Class
    //    public void filter(String charText)
    //    {
    //        charText = charText.toLowerCase(Locale.getDefault());
    //        worldpopulationlist.clear();
    //        if (charText.length() == 0) {
    //            worldpopulationlist.addAll(arraylist);
    //        }
    //        else
    //        {
    //            for (WorldPopulation wp : arraylist)
    //            {
    //                if (wp.getName().toLowerCase(Locale.getDefault()).contains(charText))
    //                {
    //                    worldpopulationlist.add(wp);
    //                }
    //            }
    //        }
    //        notifyDataSetChanged();
    //    }




    //
    //      public void setFilter(List<WorldPopulation> countryModels)
    //      {
    //          worldpopulationlist = new ArrayList<>();
    //          worldpopulationlist.addAll(countryModels);
    //          notifyDataSetChanged();
    //      }



            public void Refresh_listview()
            {
    //      loading =ProgressDialog.show(MainActivity.this, "Updating", "Please wait...", false, false);
    //      loading.show();
                notifyDataSetChanged();
            }

    }
导入android.app.AlertDialog;
导入android.content.ContentResolver;
导入android.app.ProgressDialog;
导入android.content.ContentUris;
导入android.content.Context;
导入android.content.DialogInterface;
导入android.content.res.Resources;
导入android.database.Cursor;
导入android.graphics.Bitmap;
导入android.graphics.BitmapFactory;
导入android.net.Uri;
导入android.os.Bundle;
导入android.provider.contacts合同;
导入android.support.v4.app.Fragment;
导入android.support.v7.app.ActionBar;
导入android.support.v7.app.ActionBarActivity;
导入android.support.v7.widget.Toolbar;
导入android.text.Editable;
导入android.text.TextWatcher;
导入android.util.SparseBooleanArray;
导入android.view.ActionMode;
导入android.view.LayoutInflater;
导入android.view.Menu;
导入android.view.MenuInflater;
导入android.view.MenuItem;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AbsListView;
导入android.widget.ArrayAdapter;
导入android.widget.EditText;
导入android.widget.ImageView;
导入android.widget.ListView;
导入android.widget.SearchView;
导入android.widget.TextView;
导入android.widget.Toast;
导入com.example.admin.business\u app.R;
导入java.io.InputStream;
导入java.util.ArrayList;
导入java.util.Collections;
导入java.util.Comparator;
导入java.util.List;
导入java.util.Locale;
/**
*由管理员于2016年3月15日创建。
*/
公共类联系人列表扩展片段{
//声明变量
ListView联系人ListView;
ListViewAdapter ListViewAdapter;
List worldpopulationlist=新建ArrayList();
语境;
字符串[]名称;
字符串[]电话号码;
对话加载;
长联系电话号码;
位图图像;
工具栏工具栏;
编辑文本搜索;
//编辑文本编辑搜索;
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图根视图=充气机。充气(R.layout.listview_main,container,false);
{
super.onCreate(savedInstanceState);
//从listview_main.xml获取视图
//ActionBar ActionBar=getSupportActionBar();
//mToolbar=(工具栏)findViewById(R.id.contacts\u工具栏);
//mToolbar.setTitle(“集团”);
//设置支持操作栏(mToolbar);
contactlistview=(ListView)rootview.findViewById(R.id.ListView);
search_text=(EditText)rootview.findviewbyd(R.id.search);
search_text.addTextChangedListener(新的TextWatcher(){
public void PostTextChanged(可编辑arg0){
//TODO自动生成的方法存根
String text=search_text.getText().toString().toLowerCase(Locale.getDefault());
listviewadapter.filter(文本);
}
@凌驾
更改前的公共无效(字符序列arg0,int arg1,
整数arg2,整数arg3){
//TODO自动生成的方法存根
}
@凌驾
public void onTextChanged(字符序列arg0、int arg1、int arg2、,
int arg3){
//TODO自动生成的方法存根
}
});
//将样本数据生成到字符串数组中
光标=getActivity().getContentResolver().query(
ContactsContract.CommonDataTypes.Phone.CONTENT\u URI,null,null,
空,空);
while(phones.moveToNext()){
字符串名称=电话
.getString(电话)
.getColumnIndex(ContactsContract.CommonDataTypes.Phone.DISPLAY_NAME));
字符串phoneNumber=电话
.getString(电话)
.getColumnIndex(ContactsContract.CommonDataTypes.Phone.NUMBER));
contact_id=phones.getLong(phones.getColumnIndex(ContactsContract.CommonDataTypes.Phone.contact_id));
image=getFacebookPhoto(联系人id);
System.out.println(“联系人id的值为:“+联系人id”);
WorldPopulation objContact=新世界人口();
objContact.setName(名称);
objContact.setPhoneno(电话号码);
objContact.setPhoto(图像);
添加(objContact);
}
电话。关闭();
listviewadapter=新建listviewadapter(getActivity(),R.layout.listview_项,
世界人口清单);
if(null!=worldpopulationlist&&worldpopulationlist.size()!=0){
Collections.sort(worldpopulationlist,new Comparator(){
公共整数比较(世界人口lhs、世界人口rhs){
返回lhs.getName().compareTo(rhs.getName());
}
});
<application
    ....
    android:largeHeap="true"
    .... >
</application>
Picasso.with(context).load(uri) .resize(50, 50).centerCrop().into(imageView) 
compile 'com.squareup.picasso:picasso:2.5.2'
holder.personphoto.setImageBitmap(worldpopulationlist.get(position).getPhoto());