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

چگونه می توان با اسکرول کردن جوابها, سوال هم به بالا برود؟ یعنی در واقع سوال به عنوان اولین عنصر listview محسوب شود؟
این را هم در نظر داشته باشید که متن سوال می تواند چندین خط باشد, لذا حتما باید اسکرول شود
میتونید از کاستوم ویو استفاده کنید 2 ویو مختلف یکی برای سوال یکی برای جواب که میتونید داخل یه اسکرول ویو هر وقت نیاز داشتید به تعداد مورد نیاز بسازید و ازشون اینطوری استفاده کنید .
برای ساخت ویو سوال جواب هم میتونید از حلقه for و شرط if استفاده کنید .
اینطوری هم اسکرول میشه هم مدیریتش دست خودتون هست .البته بهتره تعداد سوال و جوال ها زیاد نباشه چون باعث کاهش سرعت در برنامه میشه
من حدس می زنم 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);
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .