使用Parse.com ParseQuery更新自定义适配器中的视图

时间:2015-01-05 05:52:43

标签: android parse-platform android-arrayadapter

我目前有一个自定义数组适配器来保存我的ParseUsers。我在这里要做的是通过在Adapter类中执行countInbackground来更新TextView。但是,我在这里看到的是它并不总是在TextView中返回正确的结果。我肯定这与getview等的行为有关。我只是为了一个更好的方法来做这件事。这是我的Adapter类。任何想要更好地处理这个问题的想法????

public class ParseUserAdapter extends ArrayAdapter<Users> {


ViewHolder holder;
private List<Users> mParseUsers,mUserId,mName;
Context mContext;
public ImageLoader imageLoader;

public interface OnDataChangeListener{
    public void onDataChanged(int size);
}

OnDataChangeListener mOnDataChangeListener;
public void setOnDataChangeListener(OnDataChangeListener onDataChangeListener){
    mOnDataChangeListener = onDataChangeListener;
}

public ParseUserAdapter(Context ctx, List<Users> parseUsers) {
   super(ctx, R.layout.friend_row, parseUsers);
   mUserId = parseUsers;
   mName = parseUsers;

    imageLoader= new ImageLoader(ctx);
}



public static class ViewHolder {

    public TextView username;
    public RoundedImageView profilepic;
    public LinearLayout friend;
    public FancyButton countView;
}

public View getView(final int position, View convertView, ViewGroup parent) {
    ViewHolder holder = null;

    Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/RobotoSlab-Bold.ttf");
    //  Typeface tf2 = Typeface.createFromAsset(context.getAssets(), "fonts/RobotoSlab-Bold.ttf");
    Typeface tf3 = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Light.ttf");

    LayoutInflater mInflater = (LayoutInflater) getContext()
            .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.friend_row, parent, false);
        holder = new ViewHolder();
        holder.username = (TextView) convertView.findViewById(R.id.username);
        holder.profilepic = (RoundedImageView) convertView.findViewById(R.id.userProfilePicture);
        holder.friend = (LinearLayout) convertView.findViewById(R.id.friend);
        holder.countView = (FancyButton) convertView.findViewById(R.id.count_view);
        convertView.setTag(holder);

        if(mOnDataChangeListener != null) {
            mOnDataChangeListener.onDataChanged(mUserId.size());
        }
    } else {
        holder = (ViewHolder) convertView.getTag();

    }

   final Users userId = mUserId.get(position);
   final Users name = mName.get(position);

    ParseQuery<ParseObject> query = ParseQuery.getQuery("Music");
    final ViewHolder finalHolder1 = holder;
    query.whereEqualTo("facebookId",userId.getUserId());
    query.whereDoesNotExist("soundfile");
    query.countInBackground(new CountCallback() {
        public void done(int count, ParseException e) {
            if (e == null) {

                String theCount = String.valueOf(count);

                finalHolder1.countView.setText(theCount);

                notifyDataSetChanged();
            } else {

            }
        }
    });

            holder.username.setText(name.getName());
            holder.username.setTypeface(tf3);


    return convertView;
    }
 }
}

0 个答案:

没有答案