2016-04-15 4 views
0

Es gibt eine benutzerdefinierte ListView, wo es den Text oder Bild oder beides angezeigt wird. Jetzt zeigt es den Text oder das Bild oder beide an, aber das Problem ist, während nur Text anzeigt, dass der Raum, der für das imageView besetzt ist, noch gesehen wird. Ich habe die Sichtbarkeit auch auf GONE gesetzt, aber es ist nicht zu verstecken.Bildansicht nicht auf benutzerdefinierten Listview

Adapter Code für Listview:

public class DescAdapter extends BaseAdapter implements Filterable{ 

private final listdisplay ds; 
private ArrayList<descusers> dusers; 
private ArrayList<descusers> orig; 

public DescAdapter(listdisplay ds, ArrayList<descusers> dusers) { 
    this.ds = ds; 
    this.dusers = dusers; 
} 

@Override 
public int getCount() { 
    return dusers.size(); 
} 

@Override 
public Object getItem(int position) { 
    return dusers.get(position); 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    descusers du = dusers.get(position); 
    String username = du.loginname; 
    String descCrip=du.descCrip; 
    String Limage = du.image; 

    convertView = LayoutInflater.from(ds).inflate(R.layout.customlist,null); 
    TextView uname = (TextView)convertView.findViewById(R.id.username); 
    TextView desc = (TextView)convertView.findViewById(R.id.description); 

    ImageView iview= (ImageView)convertView.findViewById(R.id.imageList); 
    iview.setVisibility(View.GONE); 

    uname.setText(username); 
    desc.setText(descCrip); 

    if(!Limage.isEmpty()){ 
     Glide.with(convertView.getContext()).load(Limage) 
       .diskCacheStrategy(DiskCacheStrategy.ALL).fitCenter().centerCrop().into(iview); 
     iview.setVisibility(View.VISIBLE); 

    } 


    return convertView; 
} 

} 

Benutzerdefinierte XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="226dp" 
    android:orientation="vertical" 
    android:background="@drawable/test" 
    android:layout_gravity="center_horizontal|top"> 

<TextView 
    android:id="@+id/username" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="username" 
    android:textColor="#ff6aa9ff" 
    android:textSize="20sp" 
    android:textStyle="bold" 
    android:layout_marginLeft="45dp"/> 

<TextView 
    android:id="@+id/description" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Suggest" 
    android:textColor="#ff06010b" 
    android:textSize="18sp" 
    android:layout_marginLeft="45dp"/> 

<ImageView 
    android:layout_width="275dp" 
    android:layout_height="165dp" 
    android:id="@+id/imageList" 
    android:layout_marginTop="6dp" 
    android:layout_marginLeft="45dp"/> 

</LinearLayout> 

was falsch i in dem obigen Code getan haben?

Antwort: Das Problem ist mit der linearen Layouthöhe, die als Android festgelegt wurde: layout_height = "226dp", geändert zu Wrap-Content löste das Problem.

+2

hinzufügen 'if (convertView == null) {Textview uname = (Textview) convertView.findViewById (R.id.benutzername); TextView desc = (Textansicht) convertView.findViewById (R.id.description); ImageView iview = (Bildansicht) convertView.findViewById (R.id.imageList); iview.setVisibility (Ansicht.GONE); uname.setText (Benutzername); desc.setText (descCrip); if (Limage.isEmpty()!) { Glide.with (convertView.getContext()) Last (Limage) .diskCacheStrategy (DiskCacheStrategy.ALL) .fitCenter() centerCrop() in (iview)...; iview.setVisibility (View.VISIBLE); }} ' –

+0

Rufen Sie notifyDataSetChanged() auf, nachdem Sie Ihre Ansicht aktualisiert haben? –

+2

@IntelliJAmiya - Nicht funktioniert, Das gleiche Problem. – user2269164

Antwort

0

versuchen, diesen Code in getView Methode des Adapters:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    descusers du = dusers.get(position); 
    String username = du.loginname; 
    String descCrip=du.descCrip; 
    String Limage = du.image; 
    ViewHolder viewHolder = null; 
    if(convertView==null){ 
    viewHolder = new ViewHolder(); 
    convertView = LayoutInflater.from(ds).inflate(R.layout.customlist,null); 
    viewHolder.uname = (TextView)convertView.findViewById(R.id.username); 
    viewHolder.desc = (TextView)convertView.findViewById(R.id.description); 

    viewHolder.iview= (ImageView)convertView.findViewById(R.id.imageList); 
    convertView.setTag(viewHolder); 
}else{ 
    viewHolder = (ViewHolder) convertView.getTag(); 
} 

    viewHolder.uname.setText(username); 
    viewHolder.desc.setText(descCrip); 

    if(!Limage.isEmpty()){ 
     Glide.with(convertView.getContext()).load(Limage) 
       .diskCacheStrategy(DiskCacheStrategy.ALL).fitCenter().centerCrop().into(viewHolder.iview); 
     viewHolder.iview.setVisibility(View.VISIBLE); 

    }else{ 
     viewHolder.iview.setVisibility(View.GONE); 
    } 


    return convertView; 
} 

Und Verwenden Sie diese Klasse als Halter:

class ViewHolder { 
    TextView uname; 
    TextView desc; 
    ImageView iview; 


} 
+0

Überprüfen Sie diese Antwort. –

+1

Bereits vorgeschlagen von @IntelliJ Amiya in den obigen Kommentaren überprüfen. –

+0

@jaydroider haben den Code gesehen und es versucht. ob es funktioniert oder nicht? –