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 时出现多个错误:
-
public int getCount()
应该返回您通常拥有的数据大小return data.size()
. -
addMoreItems
不添加任何项目只是增加适配器的人工尺寸。你应该在这里做data.add(aItem)
;然后调用notifyDataSetChanged()
告诉适配器数据数组具有 IndeE 更改。 -
public Object getItem(int position)
应该返回数据是什么保持那个位置,所以通常data.get(position);
-
我真的不明白你为什么要过度写
notifyDataSetChanged()
,我认为这就是你的问题来自。
尝试改变这些事情,看看情况如何。如果仍有问题,请提供适配器的完整实现(它是中继的)。