My application use a ListView
which display different items in the cell. it must have photo and name, but it happens to have description and icons.
The problem is: when I scroll the ListView
and come back to the top, the description and icons have disappeared, there are only image and name. I have the impression the description and icons have been removed to have the same size for each row.
I use a custom adapter (BaseAdapter)
for my ListView
:
public class MyAdapterPark extends BaseAdapter {
private ArrayList<DataPark> datapark;
private LayoutInflater myInflater;
public MyAdapterPark (Context context, ArrayList<DataPark> _datapark)
{
this.myInflater = LayoutInflater.from(context);
this.datapark = _datapark;
}
@Override
public int getCount() {
return this.datapark.size();
}
@Override
public Object getItem(int arg0) {
return this.datapark.get(arg0);
}
@Override
public long getItemId(int position) {
return position;
}
public static class ViewHolder {
ImageView image;
TextView text01;
ImageView facebook;
ImageView twitter;
ImageView linkedin;
ImageView blog;
ImageView music;
TextView bio;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView == null)
{
convertView = myInflater.inflate(R.layout.affichageitem, null);
holder = new 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);
}else{
holder = (ViewHolder) convertView.getTag();
}
holder.text01.setText(datapark.get(position).nickname);
if (!(datapark.get(position).pic.equals(""))){
try {
//byte[] decodedString;
//decodedString = Base64.decode(datapark.get(position).pic);
//Bitmap bitmap = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
//holder.image.setImageBitmap(bitmap);
holder.image.setImageBitmap(telechargerImage(datapark.get(position).pic));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
holder.image.setImageResource(R.drawable.profilbase);
}
if (!(datapark.get(position).facebook.equals(""))){
holder.facebook.setImageResource(R.drawable.fb);
}else{
((ImageView)convertView.findViewById(R.id.facebook)).setVisibility(View.GONE);
}
if (!(datapark.get(position).twitter.equals(""))){
holder.twitter.setImageResource(R.drawable.twitter);
}else{
((ImageView)convertView.findViewById(R.id.twitter)).setVisibility(View.GONE);
}
if (!(datapark.get(position).linkedin.equals(""))){
holder.linkedin.setImageResource(R.drawable.linkedin);
}else{
((ImageView)convertView.findViewById(R.id.linkedin)).setVisibility(View.GONE);
}
if (! (datapark.get(position).blog.equals(""))){
holder.blog.setImageResource(R.drawable.blog);
}else{
((ImageView)convertView.findViewById(R.id.blog)).setVisibility(View.GONE);
}
if (!(datapark.get(position).music.equals(""))){
holder.music.setImageResource(R.drawable.music);
}else{
((ImageView)convertView.findViewById(R.id.music)).setVisibility(View.GONE);
}
if (!(datapark.get(position).bio.equals(""))){
holder.bio.setText(datapark.get(position).bio);
}else{
((TextView)convertView.findViewById(R.id.bio)).setVisibility(View.GONE);
}
return convertView;
}
public static Bitmap telechargerImage(String url) {
Bitmap bm = null;
try {
URL aURL = new URL(url);
URLConnection conn = aURL.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
bm = BitmapFactory.decodeStream(bis);
bis.close();
is.close();
} catch (IOException e) {
Log.e("Erreur","Erreur lors de la récupération de l'image : " + e.getMessage().toString());
}
return bm;
}
}
And the XML of my adapter:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#eaf4f0"
>
<ImageView
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="@drawable/profilbase"
android:layout_margin="5sp"
/>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:paddingLeft="0sp"
android:layout_weight="1"
>
<TextView android:id="@+id/user"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="14px"
android:textColor="#000000"
android:textStyle="bold"
android:text=""
android:layout_marginTop="5sp"
/>
<TextView android:id="@+id/bio"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="14px"
android:textColor="#000000"
android:layout_marginTop="1sp"
android:layout_marginRight="2sp"
android:text=""
/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4sp"
android:layout_marginBottom="4sp"
>
<ImageView
android:id="@+id/facebook"
android:layout_width="17px"
android:layout_height="17px"
android:scaleType="fitXY"
android:layout_gravity="center"
/>
<ImageView
android:id="@+id/twitter"
android:layout_width="17px"
android:layout_height="17px"
android:scaleType="fitXY"
android:layout_gravity="center"
android:layout_marginLeft="5sp"
/>
<ImageView
android:id="@+id/linkedin"
android:layout_width="17px"
android:layout_height="17px"
android:scaleType="fitXY"
android:layout_gravity="center"
android:layout_marginLeft="5sp"
/>
<ImageView
android:id="@+id/blog"
android:layout_width="17px"
android:layout_height="17px"
android:scaleType="fitXY"
android:layout_gravity="center"
android:layout_marginLeft="5sp"
/>
<ImageView
android:id="@+id/music"
android:layout_width="17px"
android:layout_height="17px"
android:scaleType="fitXY"
android:layout_gravity="center"
android:layout_marginLeft="5sp"
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
Thanks!