带有imageview和可见性的listview

时间:2012-09-19 17:58:16

标签: android listview imageview visibility

我正在创建一个解析来自Internet的文本和图像的应用程序,并将其显示在ListView中。这很好。

ListView的每一行中,ImageView都有GONE种可见度值。

我正在尝试,如果XML解析字段的值为“是”,请将ImageView的可见性设置为VISIBLE

public class MinAdapterSuscr extends BaseAdapter {

    //... 

    public View getView(int position, View convertView, ViewGroup parent)
    {
        View vi=convertView;
        if(convertView==null)
            vi = inflater.inflate(R.layout.list_row_my_nets, null);

        TextView title = (TextView)vi.findViewById(R.id.title);
        TextView net = (TextView)vi.findViewById(R.id.net);
        ImageView home = (ImageView)vi.findViewById(R.id.enthome);
        ImageView thumb_image=(ImageView)vi.findViewById(R.id.image); 

        HashMap<String, String> onets = new HashMap<String, String>();
        onets = data.get(position);

        // añadiendo los valores al listview
        title.setText(android.text.Html.fromHtml(onets.get(netsActivity.KEY_NOMBRE_RED_SUSCR)));
        artist.setText(android.text.Html.fromHtml(onets.get(netsActivity.KEY_DESCR_RED_SUSCR)));
        nuevasEntradas.setText(android.text.Html.fromHtml(onets.get(netsActivity.KEY_POR_VER_SUSCR)));
        String isHome = onets.get(netsActivity.KEY_ES_INICIO_SUSCR);
        imageLoader.DisplayImage(song.get(netsActivity.KEY_AVATAR_RED_SUSCR), thumb_image);

        // Comprobación de si es red propia o de inicio
        if(isHome.equals("yes")) {
            home.setVisibility(View.VISIBLE);
            Log.i("looking",”home visible”);
        }

        return vi;  
    }
}

这样可行,但它显示的结果似乎是随机的。有时ImageView是可见的,有时不可见,但与XML的“是”不匹配。

我做错了什么?感谢您的帮助。

此致

2 个答案:

答案 0 :(得分:2)

如果条件,只需在中添加 else 部分,

if(isHome.equals("yes")) {
  home.setVisibility(View.VISIBLE);
  Log.i("looking",”home visible”);
}
else
{
  home.setVisibility(View.GONE);
  Log.i("looking",”home gone”);
}

试试这个,让我知道发生了什么......

答案 1 :(得分:0)

您需要同时设置"yes""no"状态,否则之前的“yesses”永远不会被关闭,因为行会被回收。 (请观看Android的Romain Guy与adapters and getView())讨论效率

if(isHome.equals("yes")) {
    home.setVisibility(View.VISIBLE);
    Log.i("looking",”home visible”);
}
else {
    home.setVisibility(View.GONE);
}