با سلام خدمت اساتید و همه ی کاربران
من یک کتاب اندروییدی ساختم که این دوتا مشکل را دارم لطفا کمکم کنید
1_وقتی مثلا یک متن طولانی در کتاب را می خوانم و دکمه خروج را می زنم هنگام اجرای دوباره کتاب متن داستان از اول شروع میشه چگونه میشه هنگامی که کاربر برنامه را اجرا کرد و یک متن یا داستانی که قبلا خوانده به همان صفحه برود و متن از سر گرفته نشود در واقع آخرین صفحه خوانده شده ذخیره شود.
2_چگونه می توانم موضوعات را دسته بندی کنم مثلا داستان ها , اس ام اس و...لطفا راهنمایی فرمایید مبتدی هستم.
سلام.
(۱۳۹۴/۰۳/۰۳, ۱۲:۲۷ ق.ظ)'مهران' نوشته: [ -> ]1_وقتی مثلا یک متن طولانی در کتاب را می خوانم و دکمه خروج را می زنم هنگام اجرای دوباره کتاب متن داستان از اول شروع میشه چگونه میشه هنگامی که کاربر برنامه را اجرا کرد و یک متن یا داستانی که قبلا خوانده به همان صفحه برود و متن از سر گرفته نشود در واقع آخرین صفحه خوانده شده ذخیره شود.
نمیشه نظر کلی داد و باید بفرمایید که ساختار نمایش اطلاعات برنامه اندروید شما به چه صورت می باشد.
(۱۳۹۴/۰۳/۰۳, ۱۲:۲۷ ق.ظ)'مهران' نوشته: [ -> ]2_چگونه می توانم موضوعات را دسته بندی کنم مثلا داستان ها , اس ام اس و...لطفا راهنمایی فرمایید مبتدی هستم.
دو Activity خواهیم داشت که هر کدام، دارای ListView است. در Activity اول، با ListView ، فهرست موضوعات را نمایش می دهیم. با اشاره کاربر روی یک item از ListView ، به Activity دوم می رود و شماره متناظر با موضوع را به ان ارسال می کنیم. در Activity دوم، بر اساس شماره دریافتی، فهرست مبحث ها را فراخوانی کرده و در ListView نمایش می دهیم.
برای ساخت ListView سفارشی، کلید زیر را بخوانید :
کلید شماره 843
برای ارسال مقدار بین Activity ها، کلید زیر را بخوانید :
کلید شماره 236
سلام مجدد
با تشکر از جواب شما
و اما (سوال شماره یک ):
ساختار نمایش اطلاعات برنامه به این صورت است که یک listView دارم که با کلیک بر روی آن اطلاعات را از دیتابیس می خواند و در یک صفحه دیگر نمایش میدهد بفرمایید چطور می توانم موقعیت صفحه را ذخیره کنم که هنگام خروج و اجرای دوباره برنامه مو قعیت متن خوانده شده حفظ شود و به اول صفحه بر نگردد.
لازم به ذکر است که از اسکرول برای نمایش متن استفاده می کنم.
یعنی انقد این کار سخته؟
لطفا یکی جواب بده...
دوست عزیز به نظرمن یکی از راه حلهایی که میتونه به شما کمک کنه.
اینه که ابتدا یک شی Scroll توی فایل جاوا بسازید و متن طولانیتون رو بهش پاس بدید.
کد پیاچپی:
ScrollView scrollView;
float scrollSpot;
protected void onCreate(Bundle savedInstanceState) {
textView.setText("my text is long...");
scrollView = new ScrollView(this);
scrollView.addView(textView);
}
حالا میتونید از دو متد SetScrollSpot (برای ست کردن پوزیشن هنگام نمایش تکست ویو که باید در متد oncreate صدا بزنید)
کد پیاچپی:
scrollView.post(new Runnable() {
public void run() {
setScrollSpot(scrollSpot);
}
});
و از متدgetScrollSpot (برای ذخیره کردن پوزیشن آخرین اسکرول که این متد رو باید هنگام ازبین رفتن اکتیویتی صدا بزنید.
کد پیاچپی:
protected void onDestroy() {
scrollSpot = getScrollSpot();
}
بدنه این دومتد هم در زیر اومده (زیاد با ساختار بدنه کلنجار نرید، و احتیاجی نیست. فقط بدونید متد get براساس پوزیشن scroll یه مقدار float بر میگردونه).
کد پیاچپی:
private float getScrollSpot() {
int y = scrollView.getScrollY();
Layout layout = textView.getLayout();
int topPadding = -layout.getTopPadding();
if (y <= topPadding) {
return (float) (topPadding - y) / textView.getLineHeight();
}
int line = layout.getLineForVertical(y - 1) + 1;
int offset = layout.getLineStart(line);
int above = layout.getLineTop(line) - y;
return offset + (float) above / textView.getLineHeight();
}
private void setScrollSpot(float spot) {
int offset = (int) spot;
int above = (int) ((spot - offset) * textView.getLineHeight());
Layout layout = textView.getLayout();
int line = layout.getLineForOffset(offset);
int y = (line == 0 ? -layout.getTopPadding() : layout.getLineTop(line))
- above;
scrollView.scrollTo(0, y);
}
این روش بالا میتونه تاحدی بهتون کمک کنه..روشهایی دیگه هم هست که روشهای دیگه یا پیچیده تر هستند یا باگهای خاص خودش داره..میتونید روشهای دیگه رو در سایت StackOverflow پیدا کنید.