Android的自定义光标适配器 [英] Android Custom Cursor Adapter

查看:155
本文介绍了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的()和b​​indView()的样本实现。

 公开查看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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆