1

我正在制作一个应用程序来解析来自 Internet 的文本和图像并将它们显示在ListView. 这工作正常。

在 的每一行中ListViewImageView具有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 的“是”不匹配。

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

问候

4

2 回答 2

2

只需在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”);
}

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

于 2012-09-19T18:08:19.647 回答
0

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

if(isHome.equals("yes")) {
    home.setVisibility(View.VISIBLE);
    Log.i("looking",”home visible”);
}
else {
    home.setVisibility(View.GONE);
} 
于 2012-09-19T18:09:01.570 回答