2016-09-19 60 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'變量? –