آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

خارج شدن اشیای بالایی listview با اسکرول آن ؟

ahmad_r  11 سال پیش  11 سال پیش
+5 0

محیطی رو در نظر بگیرید که دارای سوال و جواب است. از آنجا که جواب ها می توانند متعدد باشند در یک listview ذخیره شده اند ولی سوال در بالای listview است و اطلاعات ثابتی است.

چگونه می توان با اسکرول کردن جوابها, سوال هم به بالا برود؟ یعنی در واقع سوال به عنوان اولین عنصر listview محسوب شود؟

این را هم در نظر داشته باشید که متن سوال می تواند چندین خط باشد, لذا حتما باید اسکرول شود

+2 0
یه راهش اینه اصلا سوال تو لیست ویو نباشه ، یه لایه باشه که روی لیست قرار گرفته ، ارتفاع خاصی داره ، اگه ارتفاع متن هم طولانی باشه با یه ScrollView اسکرول بخوره ! / یه relative layout با یه linear layout که parrent top = true هست ، و یک لیست ویو (11 سال پیش)
0 0
من میخوام سوال هم جزیی از اسکرول بشه یعنی با اسکرول کردن هر قسمت از صفحه، اول سوال خارج بشه بعد یکی یکی جواب ها. آیا راهی که فرمودید حل کننده انتظار بنده هست ؟ من که جواب نگرفتم (11 سال پیش)
+1 0
خوب ! ، چیزی که شما بهش نیاز دارید ، یک هدر برای listView هست ، listView.addHeaderView (11 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
کاشی زاده  11 سال پیش
0 0

میتونید از کاستوم ویو استفاده کنید 2 ویو مختلف یکی برای سوال یکی برای جواب که میتونید داخل یه اسکرول ویو هر وقت نیاز داشتید به تعداد مورد نیاز بسازید و ازشون اینطوری استفاده کنید .

برای ساخت ویو سوال جواب هم میتونید از حلقه for و شرط if استفاده کنید .

اینطوری هم اسکرول میشه هم مدیریتش دست خودتون هست .البته بهتره تعداد سوال و جوال ها زیاد نباشه چون باعث کاهش سرعت در برنامه میشه 

0 0
یعنی راه ساده تری نیست؟ اگه نسخه جدید chrome اندروید رو دیده باشید وقتی به سمت پایین اسکرول می کنید آدرس بار به سمت بالا رفته و مخفی میشه و به محض اسکرول به سمت بالا خودشو نشون میده آیا object خاصیه؟ (11 سال پیش)
0 0
میتونید از 2 تا فریم لیوت استفاده کنید یکم پیچیده هست باید تو استک سرچ کنید (11 سال پیش)
پاسخ به سوال 
AhmadVB  11 سال پیش
+3 0

من حدس می زنم outline شما به این شکل باشد.

به این دلیل که متد onScrolListener مربوط به ListView بر روی همین متد که در ScrolView نیز وجود دارد overide می شود خاصیت scroling از ScrolView دیگر کار نمی کند.

راه حل آن دو راه است :

1- در صورتی که از همین شکل موجود در تصویر outline فوق می خواهید استفاده کنید ، دستورات زیر را در onCreate اکتیویتی بنویسید  :

 ListView lv = (ListView)findViewById(R.id.myListView);  // your listview inside scrollview
lv.setOnTouchListener(new ListView.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
// Disallow ScrollView to intercept touch events.
v.getParent().requestDisallowInterceptTouchEvent(true);
break;

case MotionEvent.ACTION_UP:
// Allow ScrollView to intercept touch events.
v.getParent().requestDisallowInterceptTouchEvent(false);
break;
}

// Handle ListView touch events.
v.onTouchEvent(event);
return true;
}
});

2- شما می توانید با استفاده از inflater ها کیفیت بهتری از اسکرول را ایجاد کنید. (شبیه همان چیزی که در مورد کروم مثال زدید) : به این شکل که یک layout مجزا برای سوال ایجاد کنید و آن را به عنوان Header به این ListView اضافه کنید (می توانید غیر از این  Header ، یک یا چند footer نیز اضافه کنید)

این دستورات را نیز در onCreate اکتیویتی بنویسید.

View header = getLayoutInflater().inflate(R.layout.header, null);
View footer = getLayoutInflater().inflate(R.layout.footer, null);
listView.addHeaderView(header);
listView.addFooterView(footer);
+1 0
احمد جان، میشه این layout ها که طریق addHeaderView به لیست ویو اضافه کردی رو به قسمت های دیگه هم اضافه کرد ؟ و همچنین میشه چندین header به لیست ویو اضافه کرد ؟ و در آخر میشه مثلآ بین هر 5 آیتم، یک layout اضافه کرد ؟ لیست ویو چنین قابلیت هایی رو داره ؟ (11 سال پیش)
+3 0
بله ، شما می توانید هر چندتا که خواستی اضافه کنی.جواب بقیه سوالاتت هم بله است. هر جا که inflater هست می تونی هر layout ای را که دوست داشته باشی در اون لحظه اضافه کنی.مهم هم نیست یکی در میان باشه یا هر پنج تا یکی (11 سال پیش)
0 0
خیلی عالیه :) ممنونم احمد جان (11 سال پیش)
+1 0
ممنون با روش دوم تست کردم دقیقا همونه که دنبالش بودم (11 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .