android加载联系人照片到列表

时间:2010-09-30 10:10:00

标签: android

您好我有这样的代码:`public class MaxsapListAdapter extends BaseAdapter {

    private LayoutInflater mInflater;
    private Bitmap mIcon1;
    private Bitmap mIcon2;
    private Bitmap mIconCall;
    private String[] DATA;

    MaxsapListAdapter(Context context, String[] DATA) {
        // Cache the LayoutInflate to avoid asking for a new one each time.
        mInflater = LayoutInflater.from(context);

        // Icons bound to the rows.
        mIcon1 = BitmapFactory.decodeResource(context.getResources(),
                R.drawable.icon48x48_1);
        mIcon2 = BitmapFactory.decodeResource(context.getResources(),
                R.drawable.icon48x48_2);
        mIconCall = BitmapFactory.decodeResource(context.getResources(), R.drawable.call);
        this.DATA = DATA;
    }

    /**
     * The number of items in the list is determined by the number of speeches
     * in our array.
     * 
     * @see android.widget.ListAdapter#getCount()
     */
    public int getCount() {
        return DATA.length;
    }

    /**
     * Since the data comes from an array, just returning the index is sufficent
     * to get at the data. If we were using a more complex data structure, we
     * would return whatever object represents one row in the list.
     * 
     * @see android.widget.ListAdapter#getItem(int)
     */
    public Object getItem(int position) {
        return position;
    }

    /**
     * Use the array index as a unique id.
     * 
     * @see android.widget.ListAdapter#getItemId(int)
     */
    public long getItemId(int position) {
        return position;
    }

    /**
     * Make a view to hold each row.
     * 
     * @see android.widget.ListAdapter#getView(int, android.view.View,
     *      android.view.ViewGroup)
     */
    public View getView(int position, View convertView, ViewGroup parent) {
        // A ViewHolder keeps references to children views to avoid unneccessary
        // calls
        // to findViewById() on each row.
        ViewHolder holder;

        // When convertView is not null, we can reuse it directly, there is no
        // need
        // to reinflate it. We only inflate a new View when the convertView
        // supplied
        // by ListView is null.
        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.list_item_icon_text, null);

            // Creates a ViewHolder and store references to the three children
            // views
            // we want to bind data to.
            holder = new ViewHolder();
            holder.text = (TextView) convertView.findViewById(R.id.text);
            holder.icon = (ImageView) convertView.findViewById(R.id.icon);
            holder.btn = (ImageButton) convertView.findViewById(R.id.button);
            convertView.setTag(holder);
        } else {
            // Get the ViewHolder back to get fast access to the TextView
            // and the ImageView.
            holder = (ViewHolder) convertView.getTag();
        }
        // Bind the data efficiently with the holder.
        holder.text.setText(DATA[position]);
        holder.icon.setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2);
        holder.btn.setImageBitmap(mIconCall);
        holder.btn.setId((int)this.getItemId(position));
        holder.btn.setFocusable(false);
        holder.btn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                      Log.e("maxsap","--------*ButtonClicked*---------");
              Log.e("maxsap","--------"+v.setTag(key, tag)+"---------");
        Intent callIntent = new Intent(v.getContext(),PhoneCall.class);
                Log.e("maxsap",PhoneCall.class.toString());
                startActivity(callIntent);  
            }
        });
        return convertView;
    }

     class ViewHolder {
        TextView text;
        ImageView icon;
        ImageButton btn;
    }
}`

在列表中加载一些任意数据数组并设置一些示例图标,我希望能够在用户名旁边的列表中使用用户联系人,例如该列表将与用户在其手机上的联系人一样多行,并且在每个联系人中都有照片加载联系人名称旁边的照片,否则加载空白图像,这可能吗?怎么样?

1 个答案:

答案 0 :(得分:0)

如果您想在列表中添加联系人和照片,则需要访问Contacts API。

对于最高1.6的Android版本,您将使用Contacts.People,对于2.0及更高版本,您将需要使用ContactsContract.Contacts。这两个都可以让您访问联系人显示名称和默认照片。

有很多关于如何利用这些的例子,包括android网站上的一些官方例子。

这篇文章应该让您开始使用新的联系人模型: http://developer.android.com/resources/articles/contacts.html

它包含一些有用的代码段,可以帮助您入门。

哦,不要忘记添加在清单中显示联系人的权限。 :)