android - 在 GridView 中为未读通知添加徽章 Android

标签 android mysql gridview notifications

你好,我有我的自定义 GridViewAdapter,其中有 7 个语音。

String[] description = new String[]{"test", "test1", "test2", "test3", "test4", "test5", "notification"};
int[] imageId = {
                R.mipmap.test,
                R.mipmap.test1,
                R.mipmap.test2,
                R.mipmap.test3,
                R.mipmap.test4,
                R.mipmap.test5,
                R.mipmap.notification,
        };

在我的数据库 (mySQL db) 中,我有一个通知表,我知道是否读取了一个通知。 所以我想在元素通知中放置一个徽章,其中包含未读通知的数量。

网格元素的实际布局是:

<de.hdodenhof.circleimageview.CircleImageView xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/image"
    android:layout_gravity="center"
    android:layout_width="88dp"
    android:layout_height="88dp"
    android:layout_marginTop="5dp"
    android:layout_marginBottom="5dp"
    app:civ_border_width="2dp"
    app:civ_border_color="#FF000000"
    />
<TextView
    android:id="@+id/description"
    android:layout_gravity="center"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="15dp"
    android:layout_marginTop="5dp"
    android:layout_marginBottom="5dp"
    />

而且我相信如果我在 rowLayout 中添加一个 TextView(如下所示)就可以了

<TextView
    android:id="@+id/unread"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:visibility="gone"
    />

但是使用这种方法我将在所有元素中看到 TextView。 当通知添加时,如何将此 textView 仅用于一个元素并刷新编号?

我看到这篇文章 https://github.com/leolin310148/ShortcutBadgerhttps://github.com/jgilfelt/android-viewbadger 但似乎已弃用。

我的适配器是:

    public class GridViewDashboardAdapter extends BaseAdapter {
    public class Holder
    {
        TextView tv;
        TextView notification;
        ImageView img;
    }
    @Override
    public View getView(final int position, View convertView, ViewGroup parent)    {
        Holder holder = new Holder();
        View rowView;
        rowView = inflater.inflate(R.layout.dashboard_grid, null);
        holder.tv=(TextView) rowView.findViewById(R.id.description);
        holder.notification=(TextView) rowView.findViewById(R.id.description);
        holder.img=(de.hdodenhof.circleimageview.CircleImageView) rowView.findViewById(R.id.image);

        holder.tv.setText(result[position]);
        holder.img.setImageResource(imageId[position]);
         /* pseudo code */
        if(notificationUnread.size()>0){
            holder.notification.setVisibility(View.VISIBLE);
        }
    }
}

最佳答案

尝试替换

android:visible="gone"

android:visibility="gone"

getView 中,您可以像这样更改可见性:

if (notificationUnread.size()>0){
    holder.notification.setVisibility(View.VISIBLE);
} else {
    holder.notification.setVisibility(View.GONE);
}

关于android - 在 GridView 中为未读通知添加徽章 Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39567468/

相关文章:

java - Picasso context==null 问题

java - Cursor isAfterLast() 在到达最后一行时返回 true

c# - 对齐 GridView 中的行值

c# - ListView + 多选 + MVVM =?

android - 我收到此错误。DraggableGridView 无法实例化

android - ViewPager 在屏幕上显示项目预览的下一个和之前

android - 关闭对话框时更改可绘制的 ImageView OnClick

mysql - 如何在 MySQL 中使用 tag_ids 获取相关问题?

python - MySQL 服务器消失了 python MySQLdb

java - PreparedStatement 上的 MySQL 语法错误在多行时失败,在单行上执行