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

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

با سلام

من یک کاردویو دارم شامل یک imageview و یک textview (برای پرچم و نام کشور) که برای نمایش عکس مشکل دارم.

من فعلا دوفایل عکس رو در assets قرار دادم و اسم عکس رو هم در دیتابیس نوشتم

توی کلاس آداپتر این کدها رو نوشتم:

public void onBindViewHolder(ViewHolder holder, int position) {
        Database database=new Database(context);
        //from database
         holder.txt_countryname.setText(items.get(position).getCountry_Name());

        //holder.img_flags.setImageBitmap(database.getBitmapFromAsset(context,items.get(position).getFlag()));
        holder.img_flags.setImageBitmap(database.getBitmapFromAsset(context,"iran.png"));
        holder.img_flags.setImageBitmap(database.getBitmapFromAsset(context,"argentina.png"));

و در کلاس فرگمنت که قراره عکس در اون نمایش داده بشه:

 public void loadDatabase(){
        Database database=new Database(getContext());
        database.CreateDatabase();
        database.openDatabase();
       
        Cursor cursor=database.QueryData("SELECT * FROM Country WHERE Ghareh='آفریقا'");
        if (cursor!=null && cursor.moveToFirst())
        {
            do {
                    Structure structure = new Structure();
                    structure.setCountry_Name(cursor.getString(1));

                    structure.setFlag(cursor.getString(4));
                    arrayList.add(structure);
                }
                while (cursor.moveToNext());
        }
    }

ولی موقع اجرا در همه ایمیج ویو ها (برای همه کشور ها) یک پرچم نمایش داده میشه!

راهنمایی کنید ممنون میشم

aa2.png

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 10 دقیقه قبل، scientific گفته است :

با سلام

من یک کاردویو دارم شامل یک imageview و یک textview (برای پرچم و نام کشور) که برای نمایش عکس مشکل دارم.

من فعلا دوفایل عکس رو در assets قرار دادم و اسم عکس رو هم در دیتابیس نوشتم

توی کلاس آداپتر این کدها رو نوشتم:


public void onBindViewHolder(ViewHolder holder, int position) {
        Database database=new Database(context);
        //from database
         holder.txt_countryname.setText(items.get(position).getCountry_Name());

        //holder.img_flags.setImageBitmap(database.getBitmapFromAsset(context,items.get(position).getFlag()));
        holder.img_flags.setImageBitmap(database.getBitmapFromAsset(context,"iran.png"));
        holder.img_flags.setImageBitmap(database.getBitmapFromAsset(context,"argentina.png"));

و در کلاس فرگمنت که قراره عکس در اون نمایش داده بشه:


 public void loadDatabase(){
        Database database=new Database(getContext());
        database.CreateDatabase();
        database.openDatabase();
       
        Cursor cursor=database.QueryData("SELECT * FROM Country WHERE Ghareh='آفریقا'");
        if (cursor!=null && cursor.moveToFirst())
        {
            do {
                    Structure structure = new Structure();
                    structure.setCountry_Name(cursor.getString(1));

                    structure.setFlag(cursor.getString(4));
                    arrayList.add(structure);
                }
                while (cursor.moveToNext());
        }
    }

ولی موقع اجرا در همه ایمیج ویو ها (برای همه کشور ها) یک پرچم نمایش داده میشه!

راهنمایی کنید ممنون میشم

aa2.png

سلام.کدتون یه مشکلی که داره اینه.شما نباید که بیاید هر دو تا عکستون رو توی onBindViewHolder قرار بدید.

 

لطفا کل کلاس اداپترتون که از RecyclerView ارث بری شده است رو بزارید براتون درست کنید

 

نمونه تغییرات :

public void onBindViewHolder(ViewHolder holder, int position) {
        Database database=new Database(context);
        //from database
         holder.txt_countryname.setText(items.get(position).getCountry_Name());

        //holder.img_flags.setImageBitmap(database.getBitmapFromAsset(context,items.get(position).getFlag()));
        holder.img_flags.setImageBitmap(database.getBitmapFromAsset(context,items.get(position).getFlag));

 


 

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 5 دقیقه قبل، Farzad Sarseifi گفته است :

سلام.کدتون یه مشکلی که داره اینه.شما نباید که بیاید هر دو تا عکستون رو توی onBindViewHolder قرار بدید.

 

لطفا کل کلاس اداپترتون که از RecyclerView ارث بری شده است رو بزارید براتون درست کنید

 

نمونه تغییرات :


public void onBindViewHolder(ViewHolder holder, int position) {
        Database database=new Database(context);
        //from database
         holder.txt_countryname.setText(items.get(position).getCountry_Name());

        //holder.img_flags.setImageBitmap(database.getBitmapFromAsset(context,items.get(position).getFlag()));
        holder.img_flags.setImageBitmap(database.getBitmapFromAsset(context,items.get(position).getFlag));

 


 

این کلاس  آداپتر:

package com.narsis.countriesandcontinents.mainPage;

import android.content.Context;
import android.content.res.AssetManager;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.text.Layout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.narsis.countriesandcontinents.Africa_Fragment;
import com.narsis.countriesandcontinents.Alert;
import com.narsis.countriesandcontinents.Database;
import com.narsis.countriesandcontinents.R;
import com.narsis.countriesandcontinents.Structure;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.zip.Inflater;

import static android.support.v7.widget.RecyclerView.*;
import static java.security.AccessController.getContext;

public class AdapterCardView extends RecyclerView.Adapter<ViewHolder> {
    Context context;
    LayoutInflater inflater;

    List<Structure> items = Collections.emptyList();

    public AdapterCardView(Context context, List<Structure> items) {
        this.context=context;
        this.items = items;
        inflater=LayoutInflater.from(context);
    }
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view=LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_cardview,parent,false);

        TextView textView= (TextView) view.findViewById(R.id.txt_title);
        ViewHolder viewHolder= new ViewHolder(view,textView);
        return viewHolder;
    }
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        Database database=new Database(context);
        //from database
         holder.txt_countryname.setText(items.get(position).getCountry_Name());

        //holder.img_flags.setImageBitmap(database.getBitmapFromAsset(context,items.get(position).getFlag()));
        holder.img_flags.setImageBitmap(database.getBitmapFromAsset(context,"iran.png"));
        holder.img_flags.setImageBitmap(database.getBitmapFromAsset(context,"argentina.png"));


    }
    @Override
    public int getItemCount() {
       return items.size();
    }

}

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 3 دقیقه قبل، scientific گفته است :

این کلاس  آداپتر:


package com.narsis.countriesandcontinents.mainPage;

import android.content.Context;
import android.content.res.AssetManager;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.text.Layout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.narsis.countriesandcontinents.Africa_Fragment;
import com.narsis.countriesandcontinents.Alert;
import com.narsis.countriesandcontinents.Database;
import com.narsis.countriesandcontinents.R;
import com.narsis.countriesandcontinents.Structure;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.zip.Inflater;

import static android.support.v7.widget.RecyclerView.*;
import static java.security.AccessController.getContext;

public class AdapterCardView extends RecyclerView.Adapter<ViewHolder> {
    Context context;
    LayoutInflater inflater;

    List<Structure> items = Collections.emptyList();

    public AdapterCardView(Context context, List<Structure> items) {
        this.context=context;
        this.items = items;
        inflater=LayoutInflater.from(context);
    }
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view=LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_cardview,parent,false);

        TextView textView= (TextView) view.findViewById(R.id.txt_title);
        ViewHolder viewHolder= new ViewHolder(view,textView);
        return viewHolder;
    }
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        Database database=new Database(context);
        //from database
         holder.txt_countryname.setText(items.get(position).getCountry_Name());

        //holder.img_flags.setImageBitmap(database.getBitmapFromAsset(context,items.get(position).getFlag()));
        holder.img_flags.setImageBitmap(database.getBitmapFromAsset(context,"iran.png"));
        holder.img_flags.setImageBitmap(database.getBitmapFromAsset(context,"argentina.png"));


    }
    @Override
    public int getItemCount() {
       return items.size();
    }

}

 

 

----------------------------------------

به این صورت ویرایش کنید

 

package com.narsis.countriesandcontinents.mainPage;

import android.content.Context;
import android.content.res.AssetManager;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.text.Layout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.narsis.countriesandcontinents.Africa_Fragment;
import com.narsis.countriesandcontinents.Alert;
import com.narsis.countriesandcontinents.Database;
import com.narsis.countriesandcontinents.R;
import com.narsis.countriesandcontinents.Structure;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.zip.Inflater;

import static android.support.v7.widget.RecyclerView.*;
import static java.security.AccessController.getContext;

public class AdapterCardView extends RecyclerView.Adapter<ViewHolder> {
    Context context;
    LayoutInflater inflater;

    List<Structure> items = Collections.emptyList();

    public AdapterCardView(Context context, List<Structure> items) {
        this.context=context;
        this.items = items;
        inflater=LayoutInflater.from(context);
    }
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view=LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_cardview,parent,false);

        TextView textView= (TextView) view.findViewById(R.id.txt_title);
        ViewHolder viewHolder= new ViewHolder(view,textView);
        return viewHolder;
    }
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        
        //from database
         holder.txt_countryname.setText(items.get(position).getCountry_Name());

        //holder.img_flags.setImageBitmap(database.getBitmapFromAsset(context,items.get(position).getFlag()));
        holder.img_flags.setImageBitmap(getBitmapFromAssets(items.get(position).getFlag()));
        //holder.img_flags.setImageBitmap(database.getBitmapFromAsset(context,"argentina.png"));


    }
    @Override
    public int getItemCount() {
       return items.size();
    }

 	public Bitmap getBitmapFromAssets(String fileName) {
    AssetManager assetManager = getAssets();

    InputStream istr = assetManager.open(fileName);
    Bitmap bitmap = BitmapFactory.decodeStream(istr);

    return bitmap;
}

}

 

در پایین کلاس یک متد بنام   getBitmapFromAssets  اضافه کردم

 

 

 

 

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 3 دقیقه قبل، Farzad Sarseifi گفته است :

 

----------------------------------------

به این صورت ویرایش کنید

 


package com.narsis.countriesandcontinents.mainPage;

import android.content.Context;
import android.content.res.AssetManager;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.text.Layout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.narsis.countriesandcontinents.Africa_Fragment;
import com.narsis.countriesandcontinents.Alert;
import com.narsis.countriesandcontinents.Database;
import com.narsis.countriesandcontinents.R;
import com.narsis.countriesandcontinents.Structure;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.zip.Inflater;

import static android.support.v7.widget.RecyclerView.*;
import static java.security.AccessController.getContext;

public class AdapterCardView extends RecyclerView.Adapter<ViewHolder> {
    Context context;
    LayoutInflater inflater;

    List<Structure> items = Collections.emptyList();

    public AdapterCardView(Context context, List<Structure> items) {
        this.context=context;
        this.items = items;
        inflater=LayoutInflater.from(context);
    }
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view=LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_cardview,parent,false);

        TextView textView= (TextView) view.findViewById(R.id.txt_title);
        ViewHolder viewHolder= new ViewHolder(view,textView);
        return viewHolder;
    }
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        
        //from database
         holder.txt_countryname.setText(items.get(position).getCountry_Name());

        //holder.img_flags.setImageBitmap(database.getBitmapFromAsset(context,items.get(position).getFlag()));
        holder.img_flags.setImageBitmap(getBitmapFromAssets(items.get(position).getFlag()));
        //holder.img_flags.setImageBitmap(database.getBitmapFromAsset(context,"argentina.png"));


    }
    @Override
    public int getItemCount() {
       return items.size();
    }

 	public Bitmap getBitmapFromAssets(String fileName) {
    AssetManager assetManager = getAssets();

    InputStream istr = assetManager.open(fileName);
    Bitmap bitmap = BitmapFactory.decodeStream(istr);

    return bitmap;
}

}

 

در پایین کلاس یک متد بنام   getBitmapFromAssets  اضافه کردم

 

 

 

 

 

خیلی ممنون

من این متد رو در کلاس دیتابیسم نوشته بودم و در آداچتر فراخوانی کردم

و این که وقتی این کد رو در کلاس آداپتر می نویسم فورس کلوز میده:

holder.img_flags.setImageBitmap(database.getBitmapFromAsset(context,items.get(position).getFlag));

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 1 دقیقه قبل، scientific گفته است :

خیلی ممنون

من این متد رو در کلاس دیتابیسم نوشته بودم و در آداچتر فراخوانی کردم

و این که وقتی این کد رو در کلاس آداپتر می نویسم فورس کلوز میده:


holder.img_flags.setImageBitmap(database.getBitmapFromAsset(context,items.get(position).getFlag));

 

من براتون درستش کردم دقت کنید کد رو؟

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

آهان متوجه شدم

منم متدی رو که دردیتابیس نوشته بودم رو کامنت کردم تا از متد شما استفاده کنم

وقتی متد شما رو paste می کنم به getAssets() ارور می گیره Alt+Enter میزنم میگه Create کنید

چطوری درستش کنم؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 2 دقیقه قبل، scientific گفته است :

آهان متوجه شدم

منم متدی رو که دردیتابیس نوشته بودم رو کامنت کردم تا از متد شما استفاده کنم

وقتی متد شما رو paste می کنم به getAssets() ارور می گیره Alt+Enter میزنم میگه Create کنید

چطوری درستش کنم؟

باید به دستور getAssets قبلش یک context بدی درست میشه

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

ارورها برطرف شدند ولی موقع اجرا فورس کلوز میده

یعنی تب اول رو نشون میده (البته بدون هیچ عکسی) به محض رفتن به تب های دیگه فورس کلوز میده

راه دیگه ای هم داره؟

 

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

 

در 32 دقیقه قبل، scientific گفته است :

ارورها برطرف شدند ولی موقع اجرا فورس کلوز میده

یعنی تب اول رو نشون میده (البته بدون هیچ عکسی) به محض رفتن به تب های دیگه فورس کلوز میده

راه دیگه ای هم داره؟

 

کدام تب رو منظورتونه؟

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

یکار دیگه کنید.یک log بندازید ببینید چی رو دیباگر تون میاد.به  این صورت

Log.e("Image Path",getBitmapFromAssets(items.get(position).getFlag().toString()))

احتمال خیلی زیاد نمی تونه تصویر رو لود کنه.لاگ رو بزنید تا خروجی رو ببینید

 

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

ببینید من به این صورت نوشتم

 public void onBindViewHolder(ViewHolder holder, int position) {
        Database database=new Database(context);
         holder.txt_countryname.setText(items.get(position).getCountry_Name());
   
   //نمایش عکس
        try {
            holder.img_flags.setImageBitmap(database.getBitmapFromAssets(items.get(position).getFlag()));
        } catch (IOException e) {
           // e.printStackTrace();
            try {
                Log.e("assets", String.valueOf(database.getBitmapFromAssets(items.get(position).getFlag().toString())));
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        }

(وقتی لاگ رو توی کش می نویسم اخطار میده که باید داخل try-catch باشه)

ولی بازم خروجی روی امیلاتور همونه...

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 24 دقیقه قبل، scientific گفته است :

ببینید من به این صورت نوشتم


 public void onBindViewHolder(ViewHolder holder, int position) {
        Database database=new Database(context);
         holder.txt_countryname.setText(items.get(position).getCountry_Name());
   
   //نمایش عکس
        try {
            holder.img_flags.setImageBitmap(database.getBitmapFromAssets(items.get(position).getFlag()));
        } catch (IOException e) {
           // e.printStackTrace();
            try {
                Log.e("assets", String.valueOf(database.getBitmapFromAssets(items.get(position).getFlag().toString())));
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        }

(وقتی لاگ رو توی کش می نویسم اخطار میده که باید داخل try-catch باشه)

ولی بازم خروجی روی امیلاتور همونه...

 

این کلاس کارش چیه ؟

         Database database=new Database(context);

 

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 1 دقیقه قبل، Farzad Sarseifi گفته است :

 

این کلاس کارش چیه ؟


         Database database=new Database(context);

کلاس دیتابیسه و دستورات پیش فرض دیتابیس رو داره مثل چک کردن پروخالی بودن دیتابیس و کپی و ...

وعلاوه بر این ها: متد getBitmapFromAssets رو هم در این کلاس تعریف کردم  که در کلاس آداپتر فراخوانی میشه و همچنین متد با نوع بازگشتی cursor : که در کلاس فرگمنتم فراخوانی میشه


  public Cursor QueryData (String query)
    {
        return myDatabase.rawQuery(query, null);
    }

 

 

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 26 دقیقه قبل، scientific گفته است :

 

دیگه نیازی به کلاس ِDatabase شما ندارید چون اطلاعات شما از طریق ArrayList وارد اداپتر شده است. با position میتونید محتویات هر سط را بدست بیارید.دقیقا مثل عنوان نوشته که الان نمایش داده میشود.

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 5 دقیقه قبل، Farzad Sarseifi گفته است :

دیگه نیازی به کلاس ِDatabase شما ندارید چون اطلاعات شما از طریق ArrayList وارد اداپتر شده است. با position میتونید محتویات هر سط را بدست بیارید.دقیقا مثل عنوان نوشته که الان نمایش داده میشود.

آخه من عکسی توی دیتابیس ندارم عکس ها رو توی assets قرار دادم و فقط اسمشون رو توی sqlite نوشتم برای همین باید متد getBitmapFromAssets() رو بنویسم که فایل عکس رو از دیتابیس بگیره

و این متد رو هم در کلاس دیتابیسم تعریف کردم

 

برای عنوان نوشته متد getCountry_Name() رو (که در کلاس Structure هست) مینویسم و نمایش میده:

holder.txt_countryname.setText(items.get(position).getCountry_Name());

ولی برای عکس پرچم متد getFlag() رو مینویسم فورس کلوز میده:

holder.img_flags.setImageBitmap(database.getBitmapFromAssets(items.get(position).getFlag()));

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 12 دقیقه قبل، scientific گفته است :

آخه من عکسی توی دیتابیس ندارم عکس ها رو توی assets قرار دادم و فقط اسمشون رو توی sqlite نوشتم برای همین باید متد getBitmapFromAssets() رو بنویسم که فایل عکس رو از دیتابیس بگیره

و این متد رو هم در کلاس دیتابیسم تعریف کردم

 

برای عنوان نوشته متد getCountry_Name() رو (که در کلاس Structure هست) مینویسم و نمایش میده:


holder.txt_countryname.setText(items.get(position).getCountry_Name());

ولی برای عکس پرچم متد getFlag() رو مینویسم فورس کلوز میده:


holder.img_flags.setImageBitmap(database.getBitmapFromAssets(items.get(position).getFlag()));

 

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

بهتره اسم عکساتون رو که در assets قرار دادید توی فیلد flag بزارید.

aa2.thumb.png.dc681bd3c65b48a5a5de4eb24ce9626e.png

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 1 دقیقه قبل، Farzad Sarseifi گفته است :

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

بهتره اسم عکساتون رو که در assets قرار دادید توی فیلد flag بزارید.

aa2.thumb.png.dc681bd3c65b48a5a5de4eb24ce9626e.png

بله من الان هم همین رو گفتم توی دیتابیسم (یعنی همون فیلد Flag) عکس ندارم فقط اسم عکس ها رو نوشتم 

آهان منظورتون اینه که اسمی که توی فیلد flag مینویسم دقیقا همون اسمی باشه که در assets هست؟

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

باید پسوند رو هم بنویسم در فیلد flag ؟

مثلا فایلی که توی assets هست با این اسمه: iran.png

حالا توی فیلد Flag در یکی از سطرها باید بنویسم: iran.png یا پسوندش لازم نییست؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در هم اکنون، scientific گفته است :

بله من الان هم همین رو گفتم توی دیتابیسم (یعنی همون فیلد Flag) عکس ندارم فقط اسم عکس ها رو نوشتم 

آهان منظورتون اینه که اسمی که توی فیلد flag مینویسم دقیقا همون اسمی باشه که در assets هست؟

اره دقیقا باید همینکارو کنی.اسم عکسی که تو فولدر assets داری رو بزار تو فیلد دیتابیست.

 

راه حل

من بهتون یه روش ساده تر رو توصیه میکنم.عکساتون رو بزارید تو mipmap و بعدش اسمش رو بدون پسوند تو دیتابیس وارد کن.

با این کد هم میتونی نمایش بدی :


ImageView iw= (ImageView)findViewById(R.id.imageView1);  
int resID = getResources().getIdentifier(items.get(position).getFlag(), "mipmap",  getPackageName());
iw.setImageResource(resID);

 

 

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 7 دقیقه قبل، Farzad Sarseifi گفته است :

اره دقیقا باید همینکارو کنی.اسم عکسی که تو فولدر assets داری رو بزار تو فیلد دیتابیست.

 

راه حل

من بهتون یه روش ساده تر رو توصیه میکنم.عکساتون رو بزارید تو mipmap و بعدش اسمش رو بدون پسوند تو دیتابیس وارد کن.

با این کد هم میتونی نمایش بدی :



ImageView iw= (ImageView)findViewById(R.id.imageView1);  
int resID = getResources().getIdentifier(items.get(position).getFlag(), "mipmap",  getPackageName());
iw.setImageResource(resID);

 

 

 

خیلی ممنون فقط درقسمت PackageName باید چی بنویسم دقیقا؟

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

 

به این صورت



ImageView iw= (ImageView)findViewById(R.id.imageView1);  
int resID = getResources().getIdentifier(items.get(position).getFlag(), "mipmap",  context.getPackageName());
iw.setImageResource(resID);

 

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

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

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

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

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

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

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

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

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

  • مطالب مشابه

    • توسط Farzad Sarseifi
      آموزش پیاده سازی دیتابیس اندروید همراه با مثال عملی
      در این اموزش میتوانید یک دیتابیس اندروید ایجاد کنید که توانایی افزودن اطلاعات،ویرایش اطلاعات ،حذف و لیست گیری اطلاعات باشید.
       
      ابتدا  یک کلاس برای ایجاد SqliteopenHelper دیتایس و جداول ایجاد میکنیم و متدهای مورد نظر را نیز در ادامه مینویسیم
      import java.util.ArrayList; import java.util.HashMap; import java.util.Hashtable; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.DatabaseUtils; import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteDatabase; public class DBHelper extends SQLiteOpenHelper { public static final String DATABASE_NAME = "MyDBName.db"; public static final String CONTACTS_TABLE_NAME = "contacts"; public static final String CONTACTS_COLUMN_ID = "id"; public static final String CONTACTS_COLUMN_NAME = "name"; public static final String CONTACTS_COLUMN_EMAIL = "email"; public static final String CONTACTS_COLUMN_PHONE = "phone"; private HashMap hp; public DBHelper(Context context) { super(context, DATABASE_NAME , null, 1); } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub db.execSQL( "create table contacts " + "(id integer primary key, name text,phone text,email text)" ); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub db.execSQL("DROP TABLE IF EXISTS contacts"); onCreate(db); } public boolean insertContact (String name, String phone, String email) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put("name", name); contentValues.put("phone", phone); contentValues.put("email", email); db.insert("contacts", null, contentValues); return true; } public Cursor getData(int id) { SQLiteDatabase db = this.getReadableDatabase(); Cursor res = db.rawQuery( "select * from contacts where id="+id+"", null ); return res; } public int numberOfRows(){ SQLiteDatabase db = this.getReadableDatabase(); int numRows = (int) DatabaseUtils.queryNumEntries(db, CONTACTS_TABLE_NAME); return numRows; } public boolean updateContact (Integer id, String name, String phone, String email) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put("name", name); contentValues.put("phone", phone); contentValues.put("email", email); db.update("contacts", contentValues, "id = ? ", new String[] { Integer.toString(id) } ); return true; } public Integer deleteContact (Integer id) { SQLiteDatabase db = this.getWritableDatabase(); return db.delete("contacts", "id = ? ", new String[] { Integer.toString(id) }); } public ArrayList<String> getAllCotacts() { ArrayList<String> array_list = new ArrayList<String>(); //hp = new HashMap(); SQLiteDatabase db = this.getReadableDatabase(); Cursor res = db.rawQuery( "select * from contacts", null ); res.moveToFirst(); while(res.isAfterLast() == false){ array_list.add(res.getString(res.getColumnIndex(CONTACTS_COLUMN_NAME))); res.moveToNext(); } return array_list; } }  
      سپس واسط کاربری گرافیکی Layout را طراحی میکنیم  activity_main.xml
      <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/scrollView1" android:layout_width="match_parent" android:layout_height="wrap_content" tools:context=".MainActivity" > <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="370dp"> <EditText android:id="@+id/editTextName" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:inputType="text" > </EditText> <EditText android:id="@+id/editTextEmail" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="22dp" android:ems="10" android:inputType="textEmailAddress" /> <EditText android:id="@+id/edit_phone" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="28dp" android:text="@string/save" /> </LinearLayout> </ScrollView>
      برای ذخیره اطلاعات در دیتابیس.میبایستی در اکتیویتی دیتابیس را new کنید تا بتوانید که اطلاعات را در دیتابیس فراخوانی کنید
      افزودن اطلاعات :
      public class MainActivity extends AppCompatActivity { DBHelper mydb; EditText editTextName,editTextEmail,edit_phone; Button button1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editTextName=(EditText)findViewById(R.id.editTextName); editTextEmail=(EditText)findViewById(R.id.editTextEmail); edit_phone=(EditText)findViewById(R.id.edit_phone); button1=(Button)findViewById(R.id.button1); mydb = new DBHelper(this); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String name=editTextName.getText().toString(); String email=editTextEmail.getText().toString(); String phone=edit_phone.getText().toString(); mydb.insertContact(name,email,phone); } }); }  
      بزودی آموزش تکمیل میگردد.
       
      دوره آموزشی اندروید
      http://android-learn.ir/online-learning/android-development-training/guruPrograms/1-android-programming/2-programming-mobile-applications-for-android
       
       
       
       
       
       
       
    • توسط elecomco
      وقتی شما یک اپلیکیشن اندروید درست می کنید، باید یه جوری بفهمید که آیا برنامه ای که ساخته اید درست کار می کند یا نه؟ در این مقاله می خواهیم شما را با نحوه اشکال زدایی پروژه با ADB اندروید استودیو آشنا کنیم.   
      اجرا و اشکال زدایی یا دیباگ اپلیکیشن در یک دستگاه سخت افزاری با ADB اندروید 
      یکی از مسائل مهم بعد از ساخت برنامه اندروید، این است که همیشه قبل از انتشار اپلیکیشن برای کاربران، برنامه را بر روی یک دستگاه واقعی آزمایش کنید. به همین منظور در این مقاله می خواهیم شما را با نحوه تنظیم محیط توسعه اندروید یا همان پلتفرم اندروید استودیو (Android Studio) و دستگاه اندروید برای آزمایش و اشکال زدایی از طریق اتصال ( Android Debug Bridge  (ADB آشنا کنیم.
      Android Debug Bridge که با نام ADB اندروید یا پل اشکال زدایی اندروید نیز شناخته می شود یک ابزار تحت خط فرمان جهت ارتباط و کنترل شبیه ساز (Emulator) یا دستگاه اندرویدی متصل به سیستم است و دستورات کاربردی متعددی نظیر نصب برنامه بر روی محیط شبیه ساز ، دسترسی به فایل های مستقر بر روی شبیه ساز و … را برای برنامه نویس فراهم می کند تا بتواند اپلیکیشن خود را تست و اشکال زدایی کند.
      با استفاده از شبیه ساز اندروید (Android emulator)، می توانید برنامه خود را در نسخه های مختلف دستگاه های اندرویدی  با اندازه های مختلف صفحه نمایش آزمایش کنید.
      تنظیم دستگاه برای توسعه اپلیکیشن اندروید ساخته شده 
      قبل از شروع اشکال زدایی در دستگاه، چند کار وجود دارد که باید انجام دهید:
      Settings اپلیکیشن را باز کنید. سپس گزینه Developer options را انتخاب کنید. در نهایت USB debugging را انتخاب کنید. سیستم خود را برای شناسایی دستگاه خود تنظیم کنید. macOS: به تنظیمات اضافی لازم نیست. Ubuntu Linux: برای نصب پکیج adb از apt-get install استفاده کنید. این مجموعه ای پیش فرض از قوانین udev با حفظ جامعه برای همه دستگاه های اندروید را به شما می دهد. اطمینان حاصل کنید که در گروه plugdev هستید. اگر پیام خطای زیر را مشاهده کردید ، adb شما را در گروه plugdev پیدا نکرد:
      error: insufficient permissions for device: udev requires plugdev group membership از idاستفاده کنید تا ببینید چه گروه هایی در آن هستید. از  sudo usermod -aG plugdev $LOGNAME استفاده کنید تا خود را به گروه plugdev اضافه کنید.
      مثال زیر نحوه نصب بسته ابزارهای Android adb را نشان می دهد.
      error: insufficient permissions for device: udev requires plugdev group membership ویندوز: درایور USB را برای ADB نصب کنید. Chrome OS: به پیکربندی اضافی لازم نیست. به دستگاه خود متصل شوید 
      هنگامی که به USB تنظیم و وصل شده اید، می توانید بر روی Run در اندروید استودیو (Android Studio) کلیک کنید تا برنامه خود را روی دستگاه ایجاد و اجرا کنید.
      برای صدور دستورات همچنین می توانید از ADB اندروید استفاده کنید:
      تأیید کنید که دستگاه شما با اجرای دستور adb devices از فهرست  android_sdk/platform-tools/ متصل است. در صورت اتصال، دستگاه ذکر شده را مشاهده خواهید کرد. برای هدف قرار دادن دستگاه خود ، هر  adb command  را با فلگ -d صادر کنید. عیب یابی اتصال دستگاه با Connection Assistant
      Connection Assistant دستورالعمل های گام به گام برای کمک به شما در تنظیم و استفاده از دستگاه از طریق اتصال ADB فراهم می کند.
      برای شروع Tools > Connection Assistant را انتخاب کنید.
      Connection Assistant دستورالعمل ها، کنترل های in-context و لیستی از دستگاه های متصل را در یک سری صفحه در پنل Assistant ارائه می دهد. از دکمه های Next و Previous در پایین پنل Assistant استفاده کنید تا در صورت لزوم از طریق صفحات استفاده کنید:
      دستگاه خود را از طریق USB متصل کنید: Connection Assistant با این کار از شما خواسته می خواهد که دستگاه خود را از طریق USB متصل کنید و یک دکمه Rescan USB را فراهم می کند که با استفاده از آن می توانید اسکن جدیدی را برای دستگاه های متصل آغاز کنید. فعال کردن اشکال زدایی USB: ابزار Connection Assistan به شما می گوید چگونه می توانید USB را در گزینه های on-device developer فعال کنید. راه اندازی مجدد سرور ADB اندروید: سرانجام، اگر هنوز دستگاه خود را در لیست دستگاه های موجود نمی بینی، می توانید از دکمه Restart ADB server در آخرین صفحه Connection Assistan استفاده کنید. راه اندازی مجدد سرور ADB همچنین باعث می شود ADB اندروید دوباره دستگاه ها را اسکن کند. اگر هنوز دستگاه خود را در لیست دستگاههای موجود نمی بینید، مراحل عیب یابی را در قسمت بعدی این صفحه امتحان کنید. مشکلات اتصال USB را برطرف کنید
      اگر Connection Assistan دستگاه شما را از طریق USB تشخیص نمی دهد، می توانید مراحل عیب یابی زیر را برای حل این مشکل امتحان کنید:
      بررسی کنید که اندروید استودیو بتواند به Android Emulator متصل شود.
      برای بررسی اینکه آیا این مسئله به دلیل وجود مشکل اتصال بین Android Studio و Android Emulator ایجاد شده است ، این مراحل را دنبال کنید:
      AVD Manager را باز کنید. اگر قبلاً آنرا ندارید ، یک AVD جدید ایجاد کنید. شبیه ساز را با استفاده از AVD خود اجرا کنید. یکی از موارد زیر را انجام دهید: اگر اندروید استودیو (Android Studio) نمی تواند به شبیه ساز متصل شود ، آخرین ابزارهای Platform SDK را دانلود کنید و دوباره امتحان کنید. اگر شبیه ساز با موفقیت شروع شد ، کابل USB را بررسی کنید. کابل USB را بررسی کنید
      برای بررسی اینکه آیا مشکل ناشی از کابل USB معیوب ایجاد شده است ، مراحل موجود در این بخش را دنبال کنید.
      اگر کابل USB دیگری دارید:
      دستگاه را با استفاده از کابل ثانویه وصل کنید. بررسی کنید آیا دستیار اتصال اکنون می تواند دستگاه را تشخیص دهد یا خیر. اگر دستگاه شناسایی نشد ، کابل اولیه را دوباره امتحان کنید. اگر دستگاه هنوز شناسایی نشده است ، فرض کنید که مشکل دستگاه است و بررسی کنید که دستگاه برای توسعه تنظیم شده است یا خیر. اگر کابل USB دیگری ندارید اما دستگاه Android دیگری دارید:
      دستگاه ثانویه را به رایانه متصل کنید. اگر دستیار اتصال می تواند دستگاه ثانویه را تشخیص دهد ، فرض کنید که مشکل دستگاه اصلی است و بررسی کنید که آیا دستگاه برای توسعه تنظیم شده است یا خیر.
      اگر دستگاه ثانویه شناسایی نشود ، ممکن است مشکل در کابل USB باشد. بررسی کنید که دستگاه برای توسعه تنظیم شده است یا خیر 
      برای بررسی اینکه آیا مشکل ناشی از تنظیمات دستگاه ایجاد شده است ، این مراحل را دنبال کنید:
      مراحل موجود در بخش تنظیم دستگاه برای توسعه را دنبال کنید.  اگر این مشکل را برطرف نکرد، برای کمک به پشتیبانی مشتری OEM دستگاه تماس بگیرید. به نماینده پشتیبانی مشتری بگویید که دستگاه با استفاده از ADB به Android Studio وصل نخواهد شد. کلید امنیتی RSA 
      وقتی دستگاهی را اجرا می کنید که دارای سیستم عامل Android 4.2.2 (سطح API 17) یا بالاتر است، سیستم از طریق کادر محاوره ای به شما نشان می دهد که آیا می خواهید یک کلید RSA را بپذیرید که امکان اشکال زدایی از طریق این رایانه را بپذیرد یا خیر. این مکانیسم امنیتی از دستگاههای کاربر محافظت می کند زیرا تضمین می کند اشکال زدایی USB و سایر دستورات adb را نمی توان اجرا کرد مگر اینکه شما قادر به باز کردن قفل دستگاه و تأیید این پیام باشید.
    • توسط Farzad Sarseifi
      انجمن اندروید ایران با همکاری فرانش برگزار میکند:
      تاریخ برگزاری : 3 آبان 1395
      مدرس : فرزاد سرسیفی
      مکان: مصلی تهرانی،غرفه فرانش
      عنوان درسی : امنیت در اندروید
      "شرکت برای عموم رایگان میباشد"
      با سپاس فراوان
      فرزاد سرسیفی
    • توسط parsdc
      سلام به همه دوستان
      زمانی که سرچ میکنیم در دیتابیس sqlite در لیست نام فارسی، متاسفانه حروف گ چ پ ژ ک بدون ترتیب حروف برمیگردونه، در این مورد تحقیق ها و تست های زیادی کردم، و متوجه شدم کد اسکی این حروف از نظر عددی  نظم ترتیبی ندارد
      لیست حروف فارسی با کد اسکی رو ببینید
      192    ہ
      193    ء
      194    آ
      195    أ
      196    ؤ
      197    إ
      198    ئ
      199    ا
      200    ب
      201    ة
      202    ت
      203    ث
      204    ج
      205    ح
      206    خ
      207    د
      208    ذ
      209    ر
      210    ز
      211    س
      212    ش
      213    ص
      214    ض
      215    ×
      216    ط
      217    ظ
      218    ع
      219    غ
      220    ـ
      221    ف
      222    ق
      223    ك
      224    à
      225    ل
      226    â
      227    م
      228    ن
      229    ه
      230    و
       
      236    ى
      237    ي
       
      129    پ
      141    چ
      142    ژ
      152    ک
      144    گ

      حرف ک عربی 223 هست در جای خودش هست اما ک فارسی 152 هست از عدد حرف آ هم کمتر هست و در سرچ بالاتر از آ قرار میگیره
      سایر حروف مشکل دار هم به همین شکل پ چ ژ ک گ
      کد های utf8 هم بررسی کردم و این مشکل رو داره، واقعا نمیدونم ماکروسافت چیکار کرده که در دیتابیس های اون این مشکل وجود نداره، شما راه حلی اصولی براش نمیشناسید؟
    • توسط Farzad Sarseifi
      در این تاپیک آموزشی، از ابتدا آموزش برنامه نویسی اندروید را شروع خواهیم نمود ،یکی از مشکلات برنامه نویسان اندروید کم یا نبود آموزش های اصولی اندروید میباشد ،بر همین اساس تصمیم بر آن داشتیم بطور جامع آموزش های فارسی را منتشر نماییم .
      بیشتر کاربران انجمن برنامه نویسی اندروید، کم و بیش با این مشکل رو به رو بوده اند که به چه صورتی اندروید را شروع کنند و شروع به آموزش اندروید بگیرند.بر این اساس در این تاپیک بطور جامع آموزش های اندروید قرار داده خواهد شد..

      این تاپیک آموزشی هر چند روز یکبار بروز رسانی خواهد شد و آموزش ها جدیدتر قرار داده خواهد شد
       
       
       
      منو در اندروید
       
      ذخیره سازی اطلاعات در اندروید
       
      فرگمنت و گوگل مپ در اندروید
       
      وب سرویس در اندروید
      آموزش های متریال دیزاین در اندروید
       
       
       
       
      آموزش های کاتلین :
       

       
       
      با تشکر
      انجمن برنامه نویسی اندروید-پی سی دروید
  • فایل

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