如果列表项为空,则将可见性设置为消失

Posted

技术标签:

【中文标题】如果列表项为空,则将可见性设置为消失【英文标题】:setting the visibility to gone if a listitem is empty 【发布时间】:2019-04-04 11:11:34 【问题描述】:

我有一个问题,一段时间以来我一直在尝试使用我在谷歌上搜索此问题时找到的提示来解决。

我的 SimpleAdapter 如下所示:

@Override
    protected void onPostExecute(Void result) 
        super.onPostExecute(result);
        ListAdapter adapter = new SimpleAdapter(MainActivity.this, contactList,
                R.layout.list_item, new String[]"namn", "avdelning", "epost", "mobil", "telnr",
                new int[]R.id.email, R.id.mobile, R.id.epost, R.id.mobil, R.id.telnr);
        lv.setAdapter(adapter);

它在列表视图中显示项目,该列表视图是通过在我的搜索视图中按下搜索查询按钮收集的,该按钮从 JSON api 获取数据。

我的问题是某些项目是空的,这会导致空白。我希望这个空白空间消失。

我尝试过使用下面的代码,但从未弄清楚如何让它工作

ListAdapter adapter2 = new SimpleAdapter(this, contactList, R.layout.list_item, new String[]"mobil"
, new int[]R.id.mobil)


    @Override

    public View getView(int position, View convertView, ViewGroup parent) 
        View v = convertView;
        ViewHolder holder;
        if (v == null) 
            holder = new ViewHolder();
            LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.list_item, null);
            holder.textView = (TextView) v.findViewById(R.id.mobil);
            //other stuff
            v.setTag(holder);
         else 
            holder = (ViewHolder) v.getTag();
        

        HashMap<String, String> contact = contactList.get(position);

        if (TextUtils.isEmpty(contact.get("mobil"))) 
            holder.textView.setVisibility(View.GONE);
            holder.textView.setVisibility(View.INVISIBLE);
            notifyDataSetChanged();
         else 
            holder.textView.setVisibility(View.VISIBLE);
        
        //do the same thing for other possible views.
        return v;
    

    class ViewHolder 
        TextView textView;
        //your other views
    
;

有什么建议吗?

【问题讨论】:

删除 notifyDataSetChanged();并尝试。 在创建contactList时检查是否有任何字段为空,然后不要将该空字段添加到列表中,这样会形成不为空的数据列表,然后您可以调用@987654323 @ 更新列表。 感谢您的提示,如果联系人列表为空,我将如何继续检查?有什么建议吗? 【参考方案1】:
public void removeUnwantedCharacter() 
    List<String> list = Arrays.asList("", "Hi", "", "How", "are", "you");
    List<String> result = new ArrayList<String>();
    if (!list.isEmpty()) 
        for (String str : list) 
            if (str != null && !str.isEmpty()) 
                result.add(str);
           
        
    
    Log.d("++++++", result.toString());

【讨论】:

以上是关于如果列表项为空,则将可见性设置为消失的主要内容,如果未能解决你的问题,请参考以下文章

当我将 ImageView 的可见性设置为线性布局消失时,它的一个孩子仍然存在,另一个在 android 中消失了

Android:将可见设置为在运行时消失会留下一个空白空间

当没有要显示的文本时,将 textview 可见性设置为 GONE

如果 MutableList 为空,如何更改 TextView 的可见性? (安卓/科特林)

为啥设置“可见性:隐藏”时表格单元格边框在谷歌浏览器中消失和“边界崩溃:崩溃;”?

使用动画将视图的可见性从消失变为可见