您好我的自定义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/ShortcutBadger 和https://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 :(得分:2)
尝试替换
android:visible="gone"
到
android:visibility="gone"
在getView
中,您可以更改此处的可见性:
if (notificationUnread.size()>0){
holder.notification.setVisibility(View.VISIBLE);
} else {
holder.notification.setVisibility(View.GONE);
}