สำหรับส่วนหนึ่งของแอพของฉันผู้ใช้จะได้รับรายชื่อและขอให้จัดกลุ่มตามที่เห็นสมควร
(หมายเหตุรหัส ListView ถูกคัดลอกคำต่อคำจากการสอน Android Views ฉันยังไม่ได้ปรับแต่งมันให้ตรงกับความต้องการของฉันฉันแค่พยายามหาวิธีใช้งานนี้)
เค้าโครงพื้นฐานคือ LinearLayout ที่มี ScrollView (เรียกว่า "groupsScrollView" ในรหัสด้านล่าง) ซึ่งมี RelativeLayout ฉันมีปุ่มและข้อความจากนั้น ListView ของฉันอยู่ด้านล่างซึ่งแสดงรายการชื่อ ทั้งหมดนี้สูงกว่าพื้นที่หน้าจอที่มองเห็นได้ดังนั้นผู้ใช้จึงสามารถเลื่อนในแนวตั้งเพื่อดูได้ทั้งหมด
ทั้งหมดนี้ทำงานได้อย่างสวยงามยกเว้นเมื่อหน้าโหลดมันจะถูกเลื่อนไปด้านบนของ ListView ของฉันเสมอ - ในช่วงกลางของหน้า ข้อความและปุ่มที่ฉันสร้างที่บอกผู้ใช้ว่าต้องทำอย่างไรจะมองไม่เห็น
ฉันสามารถคว้าหน้าจอและเลื่อนขึ้นซึ่งใช้งานได้ดี แต่ฉันต้องการให้หน้าจอโหลดหลังจากที่เลื่อนไปด้านบนแล้ว ผู้ใช้ไม่ควรเลื่อนขึ้นเพื่อดูด้านบนของหน้าที่โหลดใหม่ แต่ทุกอย่างที่ฉันพยายามเลื่อนไปทางด้านบนของหน้าจอโดยทางโปรแกรมล้มเหลว
นี่คือวิธีการ onCreate ของฉัน:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.groups);
mainScrollView = (ScrollView)findViewById(R.id.groupsScrollView);
//get the Bundle out of the Intent...
Bundle extras = getIntent().getExtras();
mNames = extras.getStringArray("mNames");
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, mNames));
ListView lv = getListView();
lv.setTextFilterEnabled(true);
//This is the line I'm having issues with
mainScrollView.pageScroll(View.FOCUS_UP);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// When clicked, show a toast with the TextView text
Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
Toast.LENGTH_SHORT).show();
}
});
}
บรรทัด "mainScrollView.pageScroll (View.FOCUS_UP); เป็นปัญหามันไม่ได้ทำให้เกิดข้อผิดพลาด แต่ดูเหมือนจะไม่ทำอะไรเลยฉันลอง scrollTo (0,0), scrollDirection (View.FOCUS_UP ) และทุกอย่างอื่นที่ฉันสามารถนึกได้
เนื่องจากฉันไม่ได้รับข้อผิดพลาดฉันจึงต้องสมมติว่าคำสั่งเลื่อนเหล่านี้ใช้งานได้จริง แต่พวกเขากำลังเลื่อนไปที่ด้านบนของ ListView แทนที่จะเป็นด้านบนของ ScrollView หรือ RelativeLayout ที่มีอยู่ สิ่งนี้ดูเหมือนจะได้รับการยืนยันโดยคำอธิบายของตัวเองของ Google สำหรับวิธีการ scrollTo (int x, int y) ที่พวกเขาพูดว่า
ดังนั้นเพื่อให้คำถามยาวยิ่งขึ้นฉันจะโหลดมุมมองมากมายบนหน้าจอที่มีอยู่ใน ScrollView ได้อย่างไรจากนั้นเลื่อนโปรแกรมทั้งหมดเลื่อนไปที่ด้านบนของหน้าเพื่อให้ผู้ใช้โต้ตอบกับมันได้โดยทางโปรแกรม
ขอบคุณ!