Android的自定义光标适配器 [英] Android Custom Cursor Adapter
本文介绍了Android的自定义光标适配器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已经创造了接触应用程序的应用程序。我在我的cutom光标适配器有问题,有两个TextView的和图像查看我每次上下滚动的图像被重复在其他列表项。任何人都可以帮助我在这一个。提前致谢。
这里的code
@覆盖
公共无效bindView(查看视图,上下文的背景下,光标光标){
如果(查看!= NULL){
ViewHolder架= initViewHolder(视图);
holder.displayName.setText(getUserDisplayName(cursor.getString(用户ID)));
holder.groupId.setText(cursor.getString(组));
holder.displayPhoto.setImageURI(imageUri);
}
}
私人ViewHolder initViewHolder(查看视图){
ViewHolder innerViewHolder = NULL;
如果(innerViewHolder == NULL){
innerViewHolder =新ViewHolder();
innerViewHolder.displayName =(TextView中)view.findViewById(R.id.name);
innerViewHolder.groupId =(TextView中)view.findViewById(R.id.groupId);
innerViewHolder.displayPhoto =(ImageView的)view.findViewById(R.id.photo);
}
返回innerViewHolder;
}
类ViewHolder {
TextView的显示名;
TextView中的groupId;
ImageView的displayPhoto;
}
@覆盖
公共查看NewView的(上下文的背景下,光标光标的ViewGroup父){
返回inflater.inflate(R.layout.contact_list_item,NULL);
}
解决方案
下面是NewView的()和bindView()的样本实现。
公开查看NewView的(上下文的背景下,光标光标的ViewGroup父){
查看查看= inflater.inflate(R.layout.list_item_whatever,NULL);
ViewHolder持有人=新ViewHolder();
holder.displayName =(TextView中)view.findViewById(R.id.name);
holder.groupId =(TextView中)view.findViewById(R.id.groupId);
holder.displayPhoto =(ImageView的)view.findViewById(R.id.photo);
view.setTag(保持器);
返回查看;
}
@覆盖
公共无效bindView(查看视图,上下文的背景下,光标光标){
ViewHolder支架=(ViewHolder)view.getTag();
如果(holder.displayName!= NULL){
holder.displayName.setText(getUserDisplayName(cursor.getString(用户ID)));
}
如果(holder.groupId!= NULL){
holder.groupId.setText(cursor.getString(组));
}
如果(holder.displayPhoto!= NULL){
holder.displayPhoto.setImageURI(imageUri);
}
}
另外,对于imageUri,你可能想从你的光标得到它,太...
目前,使用的是相同的URI的所有列表项
I have created an app for contact app. i have a problem in my cutom cursor adapter that has a two textview and Image view every time i scroll up and down the images is repeating on the other list item. anyone can help me on this one. thanks in advance.
here's a code
@Override
public void bindView(View view, Context context, Cursor cursor) {
if(view !=null){
ViewHolder holder = initViewHolder(view);
holder.displayName.setText(getUserDisplayName(cursor.getString(userid)));
holder.groupId.setText(cursor.getString(group));
holder.displayPhoto.setImageURI(imageUri);
}
}
private ViewHolder initViewHolder(View view) {
ViewHolder innerViewHolder = null;
if(innerViewHolder == null){
innerViewHolder = new ViewHolder();
innerViewHolder.displayName =(TextView) view.findViewById(R.id.name);
innerViewHolder.groupId = (TextView) view.findViewById(R.id.groupId);
innerViewHolder.displayPhoto = (ImageView) view.findViewById(R.id.photo);
}
return innerViewHolder;
}
class ViewHolder{
TextView displayName;
TextView groupId;
ImageView displayPhoto;
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
return inflater.inflate(R.layout.contact_list_item, null);
}
解决方案
Here's a sample implementation of newView() and bindView().
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View view = inflater.inflate(R.layout.list_item_whatever, null);
ViewHolder holder = new ViewHolder();
holder.displayName = (TextView) view.findViewById(R.id.name);
holder.groupId = (TextView) view.findViewById(R.id.groupId);
holder.displayPhoto = (ImageView) view.findViewById(R.id.photo);
view.setTag(holder);
return view;
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
ViewHolder holder = (ViewHolder) view.getTag();
if (holder.displayName != null) {
holder.displayName.setText(getUserDisplayName(cursor.getString(userid)));
}
if (holder.groupId != null) {
holder.groupId.setText(cursor.getString(group));
}
if (holder.displayPhoto != null) {
holder.displayPhoto.setImageURI(imageUri);
}
}
Also, for imageUri, you might want to get it from your cursor, too...
Currently, you are using the same URI for all list items
这篇关于Android的自定义光标适配器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文