【问题标题】:listview with imageview and visibility具有图像视图和可见性的列表视图
【发布时间】:2012-09-12 02:12:33
【问题描述】:

我正在制作一个应用程序,它可以解析来自 Internet 的文本和图像,并将它们显示在 ListView 中。这很好用。

ListView 的每一行中,ImageView 具有GONE 可见性值。

我正在尝试,如果 XML 解析字段的值为“yes”,则将 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 的“是”不匹配。

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

问候

【问题讨论】:

    标签: android listview imageview visibility


    【解决方案1】:

    只需在 if conition 中添加 else 部分,

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

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

    【讨论】:

    • 我没有给予“else”它应有的重要性,它现在可以正常工作。谢谢
    【解决方案2】:

    您需要同时设置"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);
    } 
    

    【讨论】:

      猜你喜欢
      • 2014-07-04
      • 2013-04-17
      • 2012-10-23
      • 2012-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多