0
请看看这个适配器,我有一个奇怪的问题,它从数据库读取数据,当行在列表视图的边框,他们是发现和没问题,但当他们走出列表视图边框(所以我不得不向下滚动),每一件事都混在一起,没有任何东西在它的位置上,你们有没有注意到这一点?当ListView项目出边框时奇怪的适配器反应
@Override
public int getCount() {
return mCursor.getCount();
}
@Override
public Object getItem(int position) {
return mCursor.getString(position);
}
@Override
public long getItemId(int position) {
return mCursor.getPosition();
}
// mCursor.getPosition()
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
holder = new ViewHolder();
convertView = mLayoutInflater.inflate(R.layout.listitem_discuss,
null);
this.convertview=convertView;
mCursor.moveToPosition(position);
holder.wrapper = (LinearLayout) convertView.findViewById(R.id.wrapper);
holder.theMessage = (TextView) convertView.findViewById(R.id.comment);
holder.theName = (TextView) convertView.findViewById(R.id.MSGname);
holder.theImage = (ImageView)convertView.findViewById(R.id.MSGimage);
android.widget.FrameLayout.LayoutParams lp =
(android.widget.FrameLayout.LayoutParams) holder.theName.getLayoutParams();
String Namer= mCursor.getString(mCursor.getColumnIndex("username"));
String namer[] = Namer.split("\\@");
String imagenamer=namer[0];
holder.theName.setText(imagenamer);
holder.theMessage.setText(mCursor.getString(mCursor.getColumnIndex("message")));
int isright=
Integer.valueOf(mCursor.getString(mCursor.getColumnIndex("isright")));
if(isright==0){
holder.theMessage.setBackgroundResource(R.drawable.bubble_yellow);
holder.wrapper.setGravity(Gravity.LEFT);
lp.gravity = Gravity.LEFT;
holder.theName.setLayoutParams(lp);
android.widget.FrameLayout.LayoutParams params = new
android.widget.FrameLayout.LayoutParams(
LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT ,Gravity.LEFT);
holder.theImage.setLayoutParams(params);
holder.theImage.setPadding(10,0,0,0);
holder.wrapper.setPadding(ImageWidth+10,40,0, 0);
holder.theName.setPadding(ImageWidth+25, 0,0, 0);
//(left, top, right, bottom)
File file= new File("storage/sdcard/LifeMatePrivate/ProfileImage
/ProfileImage,imagechange_2,"+imagenamer+",.jpg");
if(file.exists()){
Picasso.with(mContext).load(new File("storage/sdcard
/LifeMatePrivate/ProfileImage
/ProfileImage,imagechange_2,"+imagenamer+",.jpg")).resize(ImageWidth,
ImageHeight).centerCrop().into(holder.theImage);
}else{
Picasso.with(mContext).load(new File("storage/sdcard
/LifeMatePrivate/ProfileImage/Default.jpg")).resize(ImageWidth,
ImageHeight).centerCrop().into(holder.theImage);
}
}else{
holder.theMessage.setBackgroundResource(R.drawable.bubble_green);
holder.wrapper.setGravity(Gravity.RIGHT);
lp.gravity = Gravity.RIGHT;
holder.theName.setLayoutParams(lp);
android.widget.FrameLayout.LayoutParams params = new
android.widget.FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT
,Gravity.RIGHT);
holder.theImage.setLayoutParams(params);
holder.theImage.setPadding(0,0,10,0);
holder.wrapper.setPadding(0,40, ImageWidth+10, 0);
holder.theName.setPadding(0, 0, ImageWidth+25, 0);
//(left, top, right, bottom)
File file= new File("storage/sdcard/LifeMatePrivate/ProfileImage
/ProfileImage,imagechange_2,"+imagenamer+",.jpg");
if(file.exists()){
Picasso.with(mContext).load(new File("storage/sdcard/LifeMatePrivate
/ProfileImage/ProfileImage,imagechange_2,"+imagenamer+",.jpg")).resize(ImageWidth,
ImageHeight).centerCrop().into(holder.theImage);
}else{
Picasso.with(mContext).load(new File("storage/sdcard/LifeMatePrivate
/ProfileImage/Default.jpg")).resize(ImageWidth,
ImageHeight).centerCrop().into(holder.theImage);
}
}
if(!mCursor.isLast()){
mCursor.moveToNext();
}
convertView.setTag((ViewHolder)holder);
}else {
holder = (ViewHolder) convertView.getTag();
}
return convertView;
}
我认为这个问题必须与我的病情,如果{ mCursor.moveToNext(); } – user3764748
我认为你可能是对的条件。我有一个类似的问题,因为我创建的条件不能正常工作getView – user3331142
以及我认为当它到达列表的末尾,光标说终于im,所以不移动到下一个,这可能是问题,我已经寻找真正的答案并在找到时更新 – user3764748