انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
بسته شدن برنامه هنگام استفاده از حلقه در custom ListView (برنامه نویسی اندروید)

بسته شدن برنامه هنگام استفاده از حلقه در custom ListView (برنامه نویسی اندروید)

#1
با سلام خدمت دوستان
بنده یک هفته هست که با این مشکل برخورد کردم و هرکاری کردم به نتیجه نرسیدم به دادم برسید
من داخل حافظه گوشی یه پوشه درست کردم با نام 01mypicture و تعدادی عکس درون این پوشه دخیره کردم و تعداد این عکسها ممکن است زیادتر بشه یا کمتر بشه

حالا میخوام این عکسها به همراه توضیحاتی در یک لیست ویو نمایش داده شوند که مسلما باید به روش Custom ListView
هرچه آموزش و تکه کد داخل تو اینترنت هست را بررسی کردم و همه برای حالتی که عکسها داخل پوشه Drawable میباشد
در صورتیکه من عکسهام داخل پوشه ای در حافظه هست که برای همین هم تکه کد هایی از اینترنت پیدا کردم

مشکل من این هست که فرض کنید داخل پوشه یک عکس دارم حالا میخوام این عکس را 3 بار پشت سر هم نمایش بدم و من اومدم یه حلقه for نوشتم که با این حلقه for داخل شبیه ساز اندروید (YouWave) درست نمایش میده ولی وقتی فایل apk برنامه را روی گوشی میریزم با یه پیغام توقف برنامه روبرو میشم و از برنامه در میاد
حلقه for در کد زیر چه ایرادی داره؟
اصلا آیا راه حلی هست که عکسهای درون پوشه حافظه را به همراه توضیحات مربوطه در یک لیست ویو نمایش بدم؟ اگه واسه این کدی داشته باشید ممنون میشم

کد:
import java.util.ArrayList;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Environment;
import android.view.Menu;
import android.widget.ListView;
import android.widget.Toast;

public class Recive_Activity8 extends Activity {

    
    String str_path11;
    Bitmap bitmap;
    Drawable d;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.recive_activity8);

        ListView lista = (ListView) findViewById(R.id.listView1_recive_activity8);
        ArrayList<Directivo> arraydir = new ArrayList<Directivo>();
        Directivo directivo;

        // Introduzco los datos
        

        
        str_path11 = Environment.getExternalStorageDirectory().getPath()+"/01mypicture/e.jpg";

        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inPreferredConfig = Bitmap.Config.ARGB_8888;

        bitmap = BitmapFactory.decodeFile(str_path11, options);
        d = new BitmapDrawable(getResources(), bitmap);

        
        
        for (int i=0;i<3;i++){

        directivo = new Directivo(d, "text1", "text2");
        arraydir.add(directivo);
        }

        
        
        
        directivo = new Directivo(getResources().getDrawable(R.drawable.ariannahuffington), "Arianna Huffington", "Presidenta");
        arraydir.add(directivo);
        directivo = new Directivo(getResources().getDrawable(R.drawable.corinna), "Princesa Corinna", "CEO");
        arraydir.add(directivo);
        directivo = new Directivo(getResources().getDrawable(R.drawable.hillaryclinton), "Hillary Clinton", "Tesorera");
        arraydir.add(directivo);
        directivo = new Directivo(getResources().getDrawable(R.drawable.bono), "Bono el de U2", "Amenizador");
        arraydir.add(directivo);
        directivo = new Directivo(getResources().getDrawable(R.drawable.carmenmairena), "Carmen de Mairena", "Directora RRHH");
        arraydir.add(directivo);

        // Creo el adapter personalizado
        AdapterDirectivos adapter = new AdapterDirectivos(this, arraydir);

        // Lo aplico
        lista.setAdapter(adapter);


    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.recive__activity8, menu);
        return true;
    }

}



کد آداپتر

کد:
import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class AdapterDirectivos extends BaseAdapter{
    
    protected Activity activity;
    protected ArrayList<Directivo> items;

    public AdapterDirectivos(Activity activity, ArrayList<Directivo> items) {
        this.activity = activity;
        this.items = items;
      }

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

    @Override
    public Object getItem(int arg0) {
        return items.get(arg0);
    }
    
    @Override
    public long getItemId(int position) {
        return items.get(position).getId();
    }


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        
        // Generamos una convertView por motivos de eficiencia
        View v = convertView;
        
        //Asociamos el layout de la lista que hemos creado
        if(convertView == null){
            LayoutInflater inf = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = inf.inflate(R.layout.custom_list1, null);
        }
        
        // Creamos un objeto directivo
        Directivo dir = items.get(position);
        //Rellenamos la fotografأ­a
        ImageView foto = (ImageView) v.findViewById(R.id.foto);
        foto.setImageDrawable(dir.getFoto());
        //Rellenamos el nombre
        TextView nombre = (TextView) v.findViewById(R.id.nombre);
        nombre.setText(dir.getNombre());
        //Rellenamos el cargo
        TextView cargo = (TextView) v.findViewById(R.id.cargo);
        cargo.setText(dir.getCargo());
        
        // Retornamos la vista
        return v;
    }
}



کد کلاس کمکی مربوط به آداپتر

کد:
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;

public class Directivo {
    protected Drawable foto;
    
    protected Bitmap foto_bitmap;
    
    
    protected String nombre;
    protected String cargo;
    protected long id;
    
    public Directivo(Drawable foto, String nombre, String cargo) {
        super();
        this.foto = foto;
        this.nombre = nombre;
        this.cargo = cargo;
    }

    public Directivo(Drawable foto, String nombre, String cargo, long id) {
        super();
        this.foto = foto;
        this.nombre = nombre;
        this.cargo = cargo;
        this.id = id;
    }
    
    public void Directivo_Bitmap(Bitmap foto_bitmap, String nombre, String cargo) {

        this.foto_bitmap = foto_bitmap;
        this.nombre = nombre;
        this.cargo = cargo;

    }

    public Drawable getFoto() {
        return foto;
    }
    
    public Bitmap getFoto_bitmap() {
        return foto_bitmap;
    }

    public void setFoto(Drawable foto) {
        this.foto = foto;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getCargo() {
        return cargo;
    }

    public void setCargo(String cargo) {
        this.cargo = cargo;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

}
پاسخ


پیام‌های این موضوع
بسته شدن برنامه هنگام استفاده از حلقه در custom ListView (برنامه نویسی اندروید) - توسط sia - ۱۳۹۴/۱۱/۰۹, ۱۲:۱۸ ب.ظ

پرش به انجمن:


کاربران در حال بازدید این موضوع: 2 مهمان