您好我有这样的代码:`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;
}
}`
在列表中加载一些任意数据数组并设置一些示例图标,我希望能够在用户名旁边的列表中使用用户联系人,例如该列表将与用户在其手机上的联系人一样多行,并且在每个联系人中都有照片加载联系人名称旁边的照片,否则加载空白图像,这可能吗?怎么样?
答案 0 :(得分:0)
如果您想在列表中添加联系人和照片,则需要访问Contacts API。
对于最高1.6的Android版本,您将使用Contacts.People,对于2.0及更高版本,您将需要使用ContactsContract.Contacts。这两个都可以让您访问联系人显示名称和默认照片。
有很多关于如何利用这些的例子,包括android网站上的一些官方例子。
这篇文章应该让您开始使用新的联系人模型: http://developer.android.com/resources/articles/contacts.html
它包含一些有用的代码段,可以帮助您入门。
哦,不要忘记添加在清单中显示联系人的权限。 :)