پروگرس بار زیر لیست ویو یا گرید ویو ( مانند Instagram )
سلام
اگه اینستا رو دیده باشید , آخرش که میرسید , تا زمانی که آیتم های جدید اضافه بشه یک پروگرس بار ( اسپینر ) ظاهر میشه
چطوری میشه اونو اضافه کرد
تحقیق کردم اول فکر کردم فوتر هست ( گرید ویو امکان اضافه کردن فوتر رو نداره و بعد ست کردن آداپتر ممکن نیست فوتر رو اضافه کرد )
حالا چی هست و چطوری اضافه میشه ؟ ممنون میشم کمک کنید




کمی تحقیق کردم انگار باید لیست ویو رو شبیه به گرید ویو درست کرد تا بشه بهش فوتر و هدر اضافه کرد درسته دوستان؟
من از یک لایبری استفاده کردم ( Gridview with footer and header ) و یک فوتر هم اضافه کردم و مشکلی نبود ( یک پروگرس بار )
اما وقتی اداپتر رو NotifyDataSetChanged میکنم به هم میریزه و کرش میکنه اپ
چاره چیه دوستان؟

میتونید گراید ویو ویا لیست ویو رو داخل یک اسکرول ویو قرار بدین و زیر لیست ویوتون (داخل همان اسکرول ویو) یک پروگرس بار داشته باشید که هر موقع خواستید نمایش داده بشه اون رو VISIBLEکنید. در مورد قرار دادن لیست ویو ویا گراید ویو داخل اسکرول ویو یه محدودیت کوچیک وجود داره که با این لینک میتونید حلّش کنید :
public
class
ExpandableHeightGridView
extends
GridView
{
boolean
expanded =
false
;
public
ExpandableHeightGridView(Context context)
{
super
(context);
}
public
ExpandableHeightGridView(Context context, AttributeSet attrs)
{
super
(context, attrs);
}
public
ExpandableHeightGridView(Context context, AttributeSet attrs,
int
defStyle)
{
super
(context, attrs, defStyle);
}
public
boolean
isExpanded()
{
return
expanded;
}
@Override
public
void
onMeasure(
int
widthMeasureSpec,
int
heightMeasureSpec)
{
// HACK! TAKE THAT ANDROID!
if
(isExpanded())
{
// Calculate entire height by providing a very large height hint.
// But do not use the highest 2 bits of this integer; those are
// reserved for the MeasureSpec mode.
int
expandSpec = MeasureSpec.makeMeasureSpec(
Integer.MAX_VALUE >>
2
, MeasureSpec.AT_MOST);
super
.onMeasure(widthMeasureSpec, expandSpec);
ViewGroup.LayoutParams params = getLayoutParams();
params.height = getMeasuredHeight();
}
else
{
super
.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
public
void
setExpanded(
boolean
expanded)
{
this
.expanded = expanded;
}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .