رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

وارد نشدن اطلاعات به اکتیویتی جدید با اینتنت


پست های پیشنهاد شده

سلام من از دیتابیس داخلی استفاده میکنم و دیتابیسمو ساختم.توی یک صفحه یه لیستی از پست ها دارم میخوام روی اون پست که کلیک شد بره به اکتیویتی بعدی و اون اطلاعات پست رو بصورت کامل تر نمایش بده

طوری که معلومه این کار باید با اینتنت صورت بگیره ،حالا من اینتنتم رو ساختم و کداش رو قرار دادم اما اکتیویتی ک میاد خالیه خالی هستش،مشکل از کجاست؟

 

اینم کدام

 

کلاس دیتابیس(که داخلی و لوکال هست)

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);


    }


}

 

ممنون میشم کمک کنید ببینم چرا اکتیویتیم خالی میاد؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در ۱ ساعت قبل، 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  چی هستش

 

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 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
لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 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);


    }
}

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...