在列表视图中使用动画延迟加载不起作用.动画会自动重复



public class LazyImageLoadAdapter extensions BaseAdapter implements OnClickListener {

private int mCount = 1;
private Activity activity;
TransparentProgressDialog pdialog;
private ArrayList<Listdata> data;
private static LayoutInflater inflater = null;
public ImageLoader imageLoader;
private int lastPosition;
String userid;
String login;
String favorrite = "0";
public LazyImageLoadAdapter(Activity a) {
    activity = a;
}
@Override
public void notifyDataSetChanged() {
    super.notifyDataSetChanged();
    lastPosition = -1;
}
public LazyImageLoadAdapter(Activity a, ArrayList<Listdata> d,
        String loginn, String uid) {
    activity = a;
    data = d;
    login = loginn;
    userid = uid;
    pdialog = new TransparentProgressDialog(activity, R.drawable.loader);
    inflater = (LayoutInflater) activity
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    imageLoader = new ImageLoader(activity.getApplicationContext());
}
public void addMoreItems(int count) {
    mCount += count;
    if (mCount >= data.size()) {
        mCount = data.size();
    }
    notifyDataSetChanged();
}
public int getCount() {
    return mCount;
}
public Object getItem(int position) {
    return position;
}
public long getItemId(int position) {
    return position;
}
public static class ViewHolder {
    public TextView title;
    public TextView textarea;
    public TextView textWide;
    public ImageView image;
    public RelativeLayout heart;
    public TextView textviewcond;
    public TextView textrupee;
    public LinearLayout layoutcontact;
    public LinearLayout layoutchat;
    public ImageView heartt;
    public ImageView hearttiner;
    public LinearLayout propertylayout;
}
public View getView(int position, View convertView, ViewGroup parent) {
    View vi = convertView;
    final ViewHolder holder;
    final Listdata tempValues = (Listdata) data.get(position);
    if (convertView == null) {
        vi = inflater.inflate(R.layout.searchingdata, null);
        holder = new ViewHolder();
        holder.title = (TextView) vi.findViewById(R.id.textViewtitle);
        holder.textarea = (TextView) vi.findViewById(R.id.textViewarea);
        holder.image = (ImageView) vi.findViewById(R.id.imageView1);
        holder.heartt = (ImageView) vi.findViewById(R.id.imageViewheart);
        holder.hearttiner = (ImageView) vi
                .findViewById(R.id.imageViewheartiner);
        holder.textviewcond = (TextView) vi
                .findViewById(R.id.textViewcondition);
        holder.textrupee = (TextView) vi.findViewById(R.id.textViewrupees);
        holder.heart = (RelativeLayout) vi.findViewById(R.id.heartlayout);
        holder.layoutcontact = (LinearLayout) vi
                .findViewById(R.id.layoutcontact);
        holder.layoutchat = (LinearLayout) vi.findViewById(R.id.layoutchat);
        holder.propertylayout = (LinearLayout) vi
                .findViewById(R.id.propertylayout);
        vi.setTag(holder);
    } else
        holder = (ViewHolder) vi.getTag();
    Animation animation = AnimationUtils.loadAnimation(activity,
            (position > lastPosition) ? R.anim.up_from_bottom
                    : R.anim.down_from_top);
    vi.startAnimation(animation);
    lastPosition = position;

    holder.title.setText(tempValues.getcity());
    String areaa = tempValues.getarea_sq_ft();

当 ListView 中有一个数据项时,列表单元格上的动画将连续重复。 我认为问题在于它的位置或数组列表大小。 但我找不到合适的解决方案。

列表视图单元格会自动移动。 有什么解决方案吗?

对于动画,我使用它http://kylewbanks.com/blog/Implementing-Google-Plus-Style-ListView-Animations-on-Android

在实现 BaseAdapter 时出现多个错误:

  1. public int getCount()应该返回您通常拥有的数据大小 return data.size() .

  2. addMoreItems 不添加任何项目只是增加适配器的人工尺寸。你应该在这里做data.add(aItem);然后调用 notifyDataSetChanged() 告诉适配器数据数组具有 IndeE 更改。

  3. public Object getItem(int position)应该返回数据是什么保持那个位置,所以通常data.get(position);

  4. 我真的不明白你为什么要过度写notifyDataSetChanged(),我认为这就是你的问题来自。

尝试改变这些事情,看看情况如何。如果仍有问题,请提供适配器的完整实现(它是中继的)。

最新更新