hamidreza.kh 5 ارسال شده در ۷ دی ۱۳۹۵ گزارش اشتراک گذاری ارسال شده در ۷ دی ۱۳۹۵ سلام من از دیتابیس داخلی استفاده میکنم و دیتابیسمو ساختم.توی یک صفحه یه لیستی از پست ها دارم میخوام روی اون پست که کلیک شد بره به اکتیویتی بعدی و اون اطلاعات پست رو بصورت کامل تر نمایش بده طوری که معلومه این کار باید با اینتنت صورت بگیره ،حالا من اینتنتم رو ساختم و کداش رو قرار دادم اما اکتیویتی ک میاد خالیه خالی هستش،مشکل از کجاست؟ اینم کدام کلاس دیتابیس(که داخلی و لوکال هست) public class DatabaseManager extends SQLiteOpenHelper { private Context context; private static String DB_PATH = "data/data/com.wordstutorial.hamidrezak.wordstutorials/databases"; private static String DB_NAME = "words_db.db"; public static String DB_TABLE_WORDS ="words"; private static String DB_TABLE_SETTINGS="ssetings"; private static int DB_VERSION = 1; private SQLiteDatabase myDataBase; public DatabaseManager(Context context) { super(context, DB_NAME, null, DB_VERSION); this.context = context; } public void createDatabase() { boolean dbExist = checkDatabase(); if (dbExist) { Log.d("TAG", "Database already Exist"); // my Cods ... } else { this.getReadableDatabase();// } try { copyDataBase(); } catch (IOException e) { e.printStackTrace(); throw new Error("Error copying database"); } } /////////////////////////////////////////////////////////////////////////////////////////////////// private boolean checkDatabase() { SQLiteDatabase checkDB = null; try { String myPath = DB_PATH + DB_NAME; checkDB.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE); } catch (SQLiteException e) { } if (checkDB != null) { checkDB.close(); } return checkDB != null ? true : false; } private void copyDataBase() throws IOException { InputStream myInput = context.getAssets().open(DB_NAME); String outFileName = DB_PATH + DB_NAME; OutputStream myOutput = new FileOutputStream(outFileName); byte[] buffer = new byte[1024]; int length; while ((length = myInput.read(buffer)) > 0) { myOutput.write(buffer, 0, length); } myOutput.flush(); myOutput.close(); myInput.close(); } public void openDataBase() throws SQLiteException { String myPath = DB_PATH + DB_NAME; myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE); } @Override public synchronized void close() { if (myDataBase != null) myDataBase.close(); super.close(); } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { } public Cursor queryData(String query) { return myDataBase.rawQuery(query, null); } //____________________________________________________________________________________________________________________________ public Bitmap getBitmapFromAssets(String fileName) throws IOException { AssetManager assetManager = context.getAssets(); InputStream inputStream = assetManager.open(fileName); Bitmap bitmap = BitmapFactory.decodeStream(inputStream); return bitmap; } } کلاس آداپتر و ویو هولدرم (به اون اینتنی که نوشتم دقت بکنید) ublic class TextAdapter extends RecyclerView.Adapter<TextAdapter.TestViewHolder> { private Context context; private List<Word> words; public TextAdapter(Context context, List<Word> words) { this.context = context; this.words = words; } @Override public TestViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.tutorial_boxs_layout, parent, false); return new TestViewHolder(view); } @Override public void onBindViewHolder(TestViewHolder holder, int position) { DatabaseManager db=new DatabaseManager(context); holder.txtTitle.setText(words.get(position).getTitle()); int resID = context.getResources().getIdentifier(words.get(position).getImageview(), "mipmap", context.getPackageName()); if((words.get(position).getImageview()).equals("0")) { try { holder.imageWord.setImageBitmap(db.getBitmapFromAssets("pic1_sample.png")); } catch (IOException e) { e.printStackTrace(); } } else { holder.imageWord.setImageResource(resID); } holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent=new Intent(context, WordActivity.class); Word word=new Word(); intent.putExtra("id",word.getId()); intent.putExtra("word",word.getTitle()); intent.putExtra("image",word.getImageview()); context.startActivity(intent); } }); } @Override public int getItemCount() { return words.size(); } public class TestViewHolder extends RecyclerView.ViewHolder { private TextView txtTitle; private ImageView imageWord; public TestViewHolder(View itemView) { super(itemView); txtTitle = (TextView) itemView.findViewById(R.id.box_title); imageWord = (ImageView) itemView.findViewById(R.id.box_image); } } } اینم اکتیویتی ک میخوام اطلاعات رو برام با استفاده از اینتنت نمایش بده public class WordActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_word); Intent intent=getIntent(); int id=intent.getIntExtra("id",0); String wordTitle=intent.getStringExtra("word"); String image=intent.getStringExtra("image"); ImageView imageBox=(ImageView)findViewById(R.id.box_image); TextView textBox=(TextView)findViewById(R.id.box_title); Picasso.with(this).load(image).into(imageBox); textBox.setText(wordTitle); } } ممنون میشم کمک کنید ببینم چرا اکتیویتیم خالی میاد؟ نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر
Farzad Sarseifi 575 ارسال شده در ۷ دی ۱۳۹۵ گزارش اشتراک گذاری ارسال شده در ۷ دی ۱۳۹۵ در ۱ ساعت قبل، hamidreza.kh گفته است : سلام من از دیتابیس داخلی استفاده میکنم و دیتابیسمو ساختم.توی یک صفحه یه لیستی از پست ها دارم میخوام روی اون پست که کلیک شد بره به اکتیویتی بعدی و اون اطلاعات پست رو بصورت کامل تر نمایش بده طوری که معلومه این کار باید با اینتنت صورت بگیره ،حالا من اینتنتم رو ساختم و کداش رو قرار دادم اما اکتیویتی ک میاد خالیه خالی هستش،مشکل از کجاست؟ اینم کدام کلاس دیتابیس(که داخلی و لوکال هست) public class DatabaseManager extends SQLiteOpenHelper { private Context context; private static String DB_PATH = "data/data/com.wordstutorial.hamidrezak.wordstutorials/databases"; private static String DB_NAME = "words_db.db"; public static String DB_TABLE_WORDS ="words"; private static String DB_TABLE_SETTINGS="ssetings"; private static int DB_VERSION = 1; private SQLiteDatabase myDataBase; public DatabaseManager(Context context) { super(context, DB_NAME, null, DB_VERSION); this.context = context; } public void createDatabase() { boolean dbExist = checkDatabase(); if (dbExist) { Log.d("TAG", "Database already Exist"); // my Cods ... } else { this.getReadableDatabase();// } try { copyDataBase(); } catch (IOException e) { e.printStackTrace(); throw new Error("Error copying database"); } } /////////////////////////////////////////////////////////////////////////////////////////////////// private boolean checkDatabase() { SQLiteDatabase checkDB = null; try { String myPath = DB_PATH + DB_NAME; checkDB.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE); } catch (SQLiteException e) { } if (checkDB != null) { checkDB.close(); } return checkDB != null ? true : false; } private void copyDataBase() throws IOException { InputStream myInput = context.getAssets().open(DB_NAME); String outFileName = DB_PATH + DB_NAME; OutputStream myOutput = new FileOutputStream(outFileName); byte[] buffer = new byte[1024]; int length; while ((length = myInput.read(buffer)) > 0) { myOutput.write(buffer, 0, length); } myOutput.flush(); myOutput.close(); myInput.close(); } public void openDataBase() throws SQLiteException { String myPath = DB_PATH + DB_NAME; myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE); } @Override public synchronized void close() { if (myDataBase != null) myDataBase.close(); super.close(); } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { } public Cursor queryData(String query) { return myDataBase.rawQuery(query, null); } //____________________________________________________________________________________________________________________________ public Bitmap getBitmapFromAssets(String fileName) throws IOException { AssetManager assetManager = context.getAssets(); InputStream inputStream = assetManager.open(fileName); Bitmap bitmap = BitmapFactory.decodeStream(inputStream); return bitmap; } } کلاس آداپتر و ویو هولدرم (به اون اینتنی که نوشتم دقت بکنید) ublic class TextAdapter extends RecyclerView.Adapter<TextAdapter.TestViewHolder> { private Context context; private List<Word> words; public TextAdapter(Context context, List<Word> words) { this.context = context; this.words = words; } @Override public TestViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.tutorial_boxs_layout, parent, false); return new TestViewHolder(view); } @Override public void onBindViewHolder(TestViewHolder holder, int position) { DatabaseManager db=new DatabaseManager(context); holder.txtTitle.setText(words.get(position).getTitle()); int resID = context.getResources().getIdentifier(words.get(position).getImageview(), "mipmap", context.getPackageName()); if((words.get(position).getImageview()).equals("0")) { try { holder.imageWord.setImageBitmap(db.getBitmapFromAssets("pic1_sample.png")); } catch (IOException e) { e.printStackTrace(); } } else { holder.imageWord.setImageResource(resID); } holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent=new Intent(context, WordActivity.class); Word word=new Word(); intent.putExtra("id",word.getId()); intent.putExtra("word",word.getTitle()); intent.putExtra("image",word.getImageview()); context.startActivity(intent); } }); } @Override public int getItemCount() { return words.size(); } public class TestViewHolder extends RecyclerView.ViewHolder { private TextView txtTitle; private ImageView imageWord; public TestViewHolder(View itemView) { super(itemView); txtTitle = (TextView) itemView.findViewById(R.id.box_title); imageWord = (ImageView) itemView.findViewById(R.id.box_image); } } } اینم اکتیویتی ک میخوام اطلاعات رو برام با استفاده از اینتنت نمایش بده public class WordActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_word); Intent intent=getIntent(); int id=intent.getIntExtra("id",0); String wordTitle=intent.getStringExtra("word"); String image=intent.getStringExtra("image"); ImageView imageBox=(ImageView)findViewById(R.id.box_image); TextView textBox=(TextView)findViewById(R.id.box_title); Picasso.with(this).load(image).into(imageBox); textBox.setText(wordTitle); } } ممنون میشم کمک کنید ببینم چرا اکتیویتیم خالی میاد؟ آیا کدتون رو دیباگ کنید روی دکمه ای که میخواهید startActivity کنید ببینید محتویات کلاس word چی هستش نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر
hamidreza.kh 5 ارسال شده در ۷ دی ۱۳۹۵ مالک گزارش اشتراک گذاری ارسال شده در ۷ دی ۱۳۹۵ (ویرایش شده) در 3 ساعت قبل، Farzad Sarseifi گفته است : آیا کدتون رو دیباگ کنید روی دکمه ای که میخواهید startActivity کنید ببینید محتویات کلاس word چی هستش یه اشکال تایپی بود،الان توی اکتیویتی جدید کلمه ام از دیتابیس و مشخصا اکتیویتی قبلی به اکتیویتی جدید اومده و اجرا میشه ، اما وقتی میخوام با picasso از دیتامدلم بگیرم و بریزمش توی یک image view درون کلاس word ،اونو نشون نمیده ! به عبارتی دیگه الان فقط تکس رو توی اکتیویتی جدید نشون میده و عکس رو نشون نمیده !!!! مشکل از چی میتونه باشه؟؟ آیا دلیلش میتونه این باشه که من با استفاده از mipmap اونو اجرا کردم و الان توی اکتیویتی دیگه با پیکاسو میخوام از دیتامدلم نشونش بدم لود نمیشه؟ اینم کدام: آداپترم: @Override public void onBindViewHolder(TestViewHolder holder, int position) { final Word word=words.get(position); holder.txtTitle.setText(word.getTitle()); int resID = context.getResources().getIdentifier(word.getImageview(), "mipmap", context.getPackageName()); holder.imageWord.setImageResource(resID); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent=new Intent(context, WordActivity.class); intent.putExtra("id",word.getId()); intent.putExtra("word",word.getTitle()); intent.putExtra("image",word.getImageview()); context.startActivity(intent); } }); } @Override public int getItemCount() { return words.size(); } public class TestViewHolder extends RecyclerView.ViewHolder { private TextView txtTitle; private ImageView imageWord; public TestViewHolder(View itemView) { super(itemView); txtTitle = (TextView) itemView.findViewById(R.id.box_title); imageWord = (ImageView) itemView.findViewById(R.id.box_image); } } } اینم اکتیویتی word public class WordActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_word); Intent intent=getIntent(); int id=intent.getIntExtra("id",0); String word=intent.getStringExtra("word"); String imageWord=intent.getStringExtra("image"); ImageView imageBox=(ImageView)findViewById(R.id.image_word_activity); TextView textBox=(TextView)findViewById(R.id.text_word_activity); Picasso.with(this).load(imageWord).into(imageBox); textBox.setText(word); } } ممنون میشم کمکم کنید ویرایش شده ۷ دی ۱۳۹۵ توسط hamidreza.kh نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر
Farzad Sarseifi 575 ارسال شده در ۷ دی ۱۳۹۵ گزارش اشتراک گذاری ارسال شده در ۷ دی ۱۳۹۵ در 5 ساعت قبل، hamidreza.kh گفته است : یه اشکال تایپی بود،الان توی اکتیویتی جدید کلمه ام از دیتابیس و مشخصا اکتیویتی قبلی به اکتیویتی جدید اومده و اجرا میشه ، اما وقتی میخوام با picasso از دیتامدلم بگیرم و بریزمش توی یک image view درون کلاس word ،اونو نشون نمیده ! به عبارتی دیگه الان فقط تکس رو توی اکتیویتی جدید نشون میده و عکس رو نشون نمیده !!!! مشکل از چی میتونه باشه؟؟ آیا دلیلش میتونه این باشه که من با استفاده از mipmap اونو اجرا کردم و الان توی اکتیویتی دیگه با پیکاسو میخوام از دیتامدلم نشونش بدم لود نمیشه؟ اینم کدام: آداپترم: @Override public void onBindViewHolder(TestViewHolder holder, int position) { final Word word=words.get(position); holder.txtTitle.setText(word.getTitle()); int resID = context.getResources().getIdentifier(word.getImageview(), "mipmap", context.getPackageName()); holder.imageWord.setImageResource(resID); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent=new Intent(context, WordActivity.class); intent.putExtra("id",word.getId()); intent.putExtra("word",word.getTitle()); intent.putExtra("image",word.getImageview()); context.startActivity(intent); } }); } @Override public int getItemCount() { return words.size(); } public class TestViewHolder extends RecyclerView.ViewHolder { private TextView txtTitle; private ImageView imageWord; public TestViewHolder(View itemView) { super(itemView); txtTitle = (TextView) itemView.findViewById(R.id.box_title); imageWord = (ImageView) itemView.findViewById(R.id.box_image); } } } اینم اکتیویتی word public class WordActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_word); Intent intent=getIntent(); int id=intent.getIntExtra("id",0); String word=intent.getStringExtra("word"); String imageWord=intent.getStringExtra("image"); ImageView imageBox=(ImageView)findViewById(R.id.image_word_activity); TextView textBox=(TextView)findViewById(R.id.text_word_activity); Picasso.with(this).load(imageWord).into(imageBox); textBox.setText(word); } } ممنون میشم کمکم کنید اینجوری تغییر بده public class WordActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_word); Intent intent=getIntent(); int id=intent.getIntExtra("id",0); String word=intent.getStringExtra("word"); String imageWord=intent.getStringExtra("image"); int resID = getResources().getIdentifier(imageWord, "mipmap", getPackageName()); ImageView imageBox=(ImageView)findViewById(R.id.image_word_activity); TextView textBox=(TextView)findViewById(R.id.text_word_activity); Picasso.with(this).load(resID).into(imageBox); textBox.setText(word); } } 1 نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .