为什么在滚动listView时项目会消失?

我的应用程序使用一个列表视图,在单元格中显示不同的项目。它必须有照片和名字,但它碰巧有描述和图标

问题是:当我滚动列表视图并返回顶部时,说明和图标消失了,只有图像和名称。我的印象是,描述和图标已被删除,每行的大小相同

我对我的列表视图使用自定义适配器(BaseAdapter)

公共类MyAdapterPark扩展BaseAdapter{
private ArrayList<DataPark>DataPark;
私人充气机;
公共MyAdapterPark(上下文,ArrayList<DataPark>_DataPark)
{
this.myInflater=LayoutInflater.from(上下文);
this.datapark=\u datapark;
}
@凌驾
public int getCount(){
返回此.datapark.size();
}
@凌驾
公共对象getItem(int arg0){
返回此.datapark.get(arg0);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
公共静态类视图持有者{
图像视图图像;
TextView text01;
ImageView facebook;
ImageView推特;
ImageView linkedin;
ImageView博客;
影像欣赏音乐;
文本视图生物;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视窗座;
if(convertView==null)
{
convertView=myInflater.inflate(R.layout.affichageitem,null);
holder=新的ViewHolder();
holder.image=(ImageView)convertView.findViewById(R.id.img);
holder.text01=(TextView)convertView.findViewById(R.id.user);
holder.facebook=(ImageView)convertView.findViewById(R.id.facebook);
holder.twitter=(ImageView)convertView.findViewById(R.id.twitter);
holder.linkedin=(ImageView)convertView.findViewById(R.id.linkedin);
holder.blog=(ImageView)convertView.findViewById(R.id.blog);
holder.music=(ImageView)convertView.findViewById(R.id.music);
holder.bio=(TextView)convertView.findViewById(R.id.bio);
convertView.setTag(支架);
}否则{
holder=(ViewHolder)convertView.getTag();
}
holder.text01.setText(datapark.get(position.昵称));
if(!(datapark.get(position).pic.equals(“”)){
试一试{
//字节[]解码字符串;
//decodedString=Base64.decode(datapark.get(position.pic));
//位图位图=BitmapFactory.decodeByteArray(decodedString,0,decodedString.length);
//holder.image.setImageBitmap(位图);
holder.image.setImageBitmap(telechargerImage(datapark.get(position.pic));
}捕获(例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}否则{
holder.image.setImageResource(R.drawable.profilbase);
}
if(!(datapark.get(position.facebook.equals(“”)){
holder.facebook.setImageResource(R.drawable.fb);
}否则{
((ImageView)convertView.findviewbyd(R.id.facebook)).setVisibility(View.go);
}
if(!(datapark.get(position.twitter.equals(“”)){
holder.twitter.setImageResource(R.drawable.twitter);
}否则{
((ImageView)convertView.findviewbyd(R.id.twitter)).setVisibility(View.go);
}
if(!(datapark.get(position.linkedin.equals(“”)){
holder.linkedin.setImageResource(R.drawable.linkedin);
}否则{
((ImageView)convertView.findViewById(R.id.linkedin)).setVisibility(View.go);
}
if(!(datapark.get(position.blog.equals)(“”)){
holder.blog.setImageResource(R.drawable.blog);
}否则{
((ImageView)convertView.findViewById(R.id.blog)).setVisibility(View.GONE);
}
if(!(datapark.get(position).music.equals(“”)){
holder.music.setImageResource(R.drawable.music);
}否则{
((ImageView)convertView.findViewById(R.id.music)).setVisibility(View.GONE);
}
如果(!(datapark.get(position.bio.equals(“”)){
holder.bio.setText(datapark.get(position.bio));
}否则{
((TextView)convertView.findViewById(R.id.bio)).setVisibility(View.go);
}
返回视图;
}
公共静态位图远程电荷图像(字符串url){
位图bm=null;
试一试{
URL aURL=新URL(URL);
URLConnection conn=aURL.openConnection();
连接();
InputStream is=conn.getInputStream();
BufferedInputStream bis=新的BufferedInputStream(is);
bm=BitmapFactory.decodeStream(bis);
二、关闭();
is.close();
}捕获(IOE异常){
Log.e(“Erreur”,“Erreur lors de la récupération de l'image:+e.getMessage().toString());
}
返回bm;
}
}

以及我的适配器的XML:

<?xml version=“1.0”encoding=“utf-8”?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android"
android:orientation=“水平”
android:layout\u width=“fill\u parent”
android:layout\u height=“包装内容”
android:background=“#eaf4f0”
&燃气轮机;
<图片框
android:id=“@+id/img”
android:layout_width=“70px”
android:layout_height=“70px”
android:background=“@drawable/carre”
android:scaleType=“fitXY”
android:padding=“5sp”
android:layout_marginLeft=“0sp”
android:src=”https://stackoverflow.com/questions/6118419/@可提取/盈利基地”
android:layout_margin=“5sp”
/&燃气轮机;
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android"
android:orientation=“垂直”
android:layout\u width=“fill\u parent”
android:layout\u height=“包装内容”
android:layout_gravity=“center”
android:paddingLeft=“0sp”
android:layout_weight=“1”
&燃气轮机;
<TextView android:id=“@+id/user”
android:layout\u width=“fill\u parent”
android:layout\u height=“包装内容”
android:textSize=“14px”
android:textColor=“#000000”
android:textStyle=“bold”
android:text=“”
android:layout_marginTop=“5sp”
/&燃气轮机;
<TextView android:id=“@+id/bio”
android:layout\u width=“fill\u parent”
android:layout\u height=“包装内容”
android:textSize=“14px”
android:textColor=“#000000”
android:layout_marginTop=“1sp”
android:layout_marginRight=“2sp”
android:text=“”
/&燃气轮机;
<线性布局
android:orientation=“水平”
android:layout\u width=“fill\u parent”
android:layout\u height=“包装内容”
android:layout_marginTop=“4sp”
android:layout_marginBottom=“4sp”
&燃气轮机;
<图片框
android:id=“@+id/facebook”
android:layout_width=“17px”
android:layout_height=“17px”
android:scaleType=“fitXY”
android:layout_gravity=“center”
/&燃气轮机;
<图片框
android:id=“@+id/twitter”
android:layout_width=“17px”
android:layout_height=“17px”
android:scaleType=“fitXY”
android:layout_gravity=“center”
android:layout_marginLeft=“5sp”
/&燃气轮机;
<图片框
android:id=“@+id/linkedin”
android:layout_width=“17px”
android:layout_height=“17px”
android:scaleType=“fitXY”
android:layout_gravity=“center”
android:layout_marginLeft=“5sp”
/&燃气轮机;
<图片框
android:id=“@+id/blog”
android:layout_width=“17px”
android:layout_height=“17px”
android:scaleType=“fitXY”
android:layout_gravity=“center”
android:layout_marginLeft=“5sp”
/&燃气轮机;
<图片框
android:id=“@+id/音乐”
android:layout_width=“17px”
android:layout_height=“17px”
android:scaleType=“fitXY”
android:layout_gravity=“center”
android:layout_marginLeft=“5sp”
/&燃气轮机;
&lt/线性布局>
&lt/线性布局>
&lt/线性布局>

谢谢

这是因为你有时会隐藏一些观点,而你再也不会展示它们了。例如:

如果(!(datapark.get(position.bio.equals(“”)){
holder.bio.setText(datapark.get(position.bio));
}否则{
((TextView)convertView.findViewById(R.id.bio)).setVisibility(View.go);
}

相反,请尝试:

如果(!(datapark.get(position.bio.equals(“”)){
holder.bio.setVisibility(视图可见);
holder.bio.setText(datapark.get(position.bio));
}否则{
holder.bio.setVisibility(View.GONE);
}

请记住,视图是循环使用的,因此,除非下次返回视图时显示这些视图,否则它们将永远不会再次可见。另外,请记住holder.bio与findViewById返回的内容相同,因此您可以在else块中执行holder.bio.setVisibility(View.go)

发表评论