2016-09-19 48 views
0

您好,我有我的自定义GridViewAdapter,我有7个语音。在GridView中为未读通知添加徽章Android

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数据库)我有一个通知表,我知道如果一个通知是否读取或不。 所以我想在元素通知中添加一个徽章,其中的通知数量未读。

网格元素的实际布局是:

<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 但似乎不推荐使用。

Adapter是:

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); 
     } 
    } 
} 
+0

您没有显示将TextView的可见性更改为可见的代码。 –

+0

你好,谢谢,我添加了代码段 – LorenzoBerti

+0

什么是'notificationUnread'? –

回答

2

尝试更换

android:visible="gone" 

android:visibility="gone" 

getView你可以改变的知名度是这样的:

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

你好,谢谢,对不起,这是我编辑的复制错误。 我的问题是,在GridView中显示徽章只有一个元素 – LorenzoBerti

+0

我看到您的编辑,但只有在一个元素中看到徽章的唯一方法是将textView并显示或不显示,如果满足一个条件? – LorenzoBerti

+0

我更新了答案。尝试隐藏元素,如果它不应该是可见的。另外什么是'notificationUnread'变量? –