نشان دادن متن طولانی در text view
سلام من میخوام توی text view متن طولانی را نمایش بدم و اگه بخوام از طریق خود اکلیپس این کارا انجام بدم زیاد جالب در نمیاد و خیلی طول میکشه چه راه هایی هست که من این کارا انجام بدم مثلا از داخل دیتابیس بخونم و یا از داخل یه notepad و از اون جایی که عنوان های داخل برنامه زیاد هست نمیخوام اکتیویتی های زیاد ی بسازم مثلا یک اکتیویتی بسازم .و برای همه فصل ها تعریفش کنم بعد بگم اگه رو این سر فصل کلیک شد این اکتیویتی باز بشه و محتوایه داخلشا از طریق دیتا بیس و یا note pad بگیره و نشون بده ممنون میشم راهنمایی کنید
بهترین راه همون دیتابیسه.
همه عناوین و موضوعات رو بریز تو دیتابیس. (میتونی همه رو تو 1 جدول بریزی با 3 ستون : id و title و text)
بعد از دیتابیس همه عناوین و بخون و مثلا تو یه لیست ویو بذار.
بعد که کاربر روی هرکدوم کلیک کرد، id اون عنصر کلیک شده رو بگیر برو صفحه بعدی و اون id رو از دیتابیس بخون (دقیقا مثل پروژه note) و توی textView نمایش بده.
اینجوری کلا 2 صفحه نیاز داری. یکی برای listView یکی برای textView
خب دو تا راه دارید یه راه اینه که دیتابیس مورد نظرتون رو با SQLite Manager بسازید مثلاً با Cloumn های : id و some_name Some_desc و رکوردهای دلخواه بعد به صورت دستی درفولدر assets پروژه کپی کنید بعد با استفاده از آموزش بخش نوزدهم - فایل سیستم، کتابخانه کپی فایل، این دیتابیس رو در مسیر مورد نظر در sdcard یا مثلاً در :
مسیر "/data/data/com.example.app/databases"کپی کنید و بعد هم با استفاده از آموزش بخش چهاردهم - بانک اطلاعات دیتای مورد نظرتون رو از دیتابیس فراخوانی کنید و مورد استفاده قرار بدید راه دوم اینه که از اینجا فایل JAR کتابخونه رو دریافت کنید و در فولدر libs پروژه تون کپی کنید بعد پسوند دیتا بیسی که ساختید رو به .db تغییر بدید و به صورت فایل zip ذخیره کنید و در پوشه ای به اسم database در assets بریزید در مرحله بعد یک کلاس مثلاً به اسم MyDatabase بسازید و کد زیر رو در اون قرار بدید
package example.your.package_name;
import android.content.Context;
import com.readystatesoftware.sqliteasset.SQLiteAssetHelper;
public class MyDatabase extends SQLiteAssetHelper {
private static final int DATABASE_VERSION = 1;
public MyDatabase(Context context, String name) {
super(context, name, null, DATABASE_VERSION);
}
}
و بعد هر جا به دیتابیس نیاز بود از متد زیر استفاده کنید
private void populateFromDatabase() {
MyDatabase sqHelper;
SQLiteDatabase database;
sqHelper = new MyDatabase(this, "yourdatabasename");
database = sqHelper.getWritableDatabase();
Cursor cursor = database.rawQuery("SELECT * FROM yourtable", null);
}
توضیحات بیشتر رو از اینجا بخونید بعد برای بخش آخر اگر میخواید از Listview استفاده کنید که بخش شانزدهم پروژه مارکت - تست با بانک لوکال رو اگه ندیدید ببینید همه چی دستتون میاد ولی اگه نه میتونید کد زیر رو به ادامه کد بالا اضافه کنید من از این روش استفاده کردم
private ArrayList<StructApplication> applications = new ArrayList<StructApplication>();
.
.
.
.
//بعد از خط آخر متد بالا کدهای زیر رو اضافه کنید
while (cursor.moveToNext()) {
StructApplication application = new StructApplication();
application.name = cursor.getString(cursor.getColumnIndex("some_name"));
application.desc = cursor.getString(cursor.getColumnIndex("some_desc"));
applications.add(application);
}
cursor.close();
}
و بعد هم از متد زیر استفاده کردم
private void putContent(int index) {
String desc = applications.get(index).desc;
Intent intent = new Intent(Activitymain.this, ActivityWhatever.class);
intent.putExtra("WHATEVER_DESC", desc);
Activitymain.this.startActivity(intent);
}
و هر جا لازم بود متد رو با شماره ی آیتم آرایه مورد نظر فراخوانی کردم
btnwhatever.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
putContent(0);
}
});
چون خودم میدونستم که متن موردنظر در کدوم عنصر آرایه ست در مثال بالا putContent() مقدار صفر رو دادم البته شاید راه بهتری هم باشه ولی من تازه کارم همین قدر بلد بودم اگه هست دوستان دیگه راهنمایی کنند
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .