[OFFEN] Bild per Intent an ListView übergeben und anzeigen

  • 6 Antworten
  • Letztes Antwortdatum
S

Sabey

Neues Mitglied
0
Hallo zusammen,

ich arbeite gerade an einer App die Rezepte mit einem Bild, dem Namen und der Kategorie in einem ListView anzeigen soll.
Über eine zweite Activity kann man die entsprechenden Daten eingeben und ein Bild machen. Diese Daten sollen dann per Intent an meine Main Activity übergeben und dort angezeigt werden. Beziehungsweise werden die Daten dort in eine Datenbank gespeichert und von dort raus gezogen und angezeigt.
Den Namen und die Kategorie zeigt es für jeden Eintrag richtig an. Allerdings weiß ich nicht wie ich das jeweilige Bild im ListView anzeigen lassen kann. Beziehungsweise wenn kein Bild gemacht wurde, ein Platzhalterbild anzeigen lasse. Dieses ist bereits in meinem Layout vorhanden, soll also nur gegebenenfalls mit einem selbst gemachten Bild überschrieben werden. Momentan stürzt die App ab, wenn ich kein eigenes Bild schieße.

Hier meine Main Activity:

Code:
   private ListViewAdapter adapter;
    private ArrayList<ListItem> itemList;
    private ListView list;
    private DatabaseAdapter receptDB;
    private SensorManager sensorMgr;
    private long mLastShakeTime;
    private SensorEventListener listener = this;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list);
        setupListView();
        setupDatabase();
        setupButton();
        setupSensor();
        addObject();


    }

    private void setupDatabase() {
        receptDB = new DatabaseAdapter(this);
        receptDB.open();
        refreshListView();
    }

    private void setupButton() {
        Button addItemButton = (Button) findViewById(R.id.addItemButton);
        addItemButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                addButtonClicked();
            }
        });
    }

    private void addButtonClicked() {
        sensorMgr.unregisterListener(listener);
        Intent newItemIntent = new Intent(List_Page.this, Add_Object.class);
        startActivity(newItemIntent);
        finish();
    }

    private void setupListView() {
        itemList = new ArrayList<ListItem>();
        adapter = new ListViewAdapter(List_Page.this, itemList);
        list = (ListView) findViewById(R.id.listItem);
        list.setOnItemLongClickListener(longClickListener);
        list.setOnItemClickListener(clickListener);
        list.setAdapter(adapter);

    }

    private void setupSensor(){
        sensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE);
        Sensor accelerometer = sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
        if (accelerometer != null) {
            sensorMgr.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL);
        }
    }

    @Override
    public void onBackPressed() {}

    private void addObject(){
        Intent intent = getIntent();
        if (intent.hasExtra(Constants.KEY_RECEPT_NAME)) {
            String name = intent.getExtras().getString(Constants.KEY_RECEPT_NAME);
            String kategory = intent.getExtras().getString(Constants.KEY_KATEGORY);
            String ingredients = intent.getExtras().getString(Constants.KEY_INGREDIENTS);
            String directions = intent.getExtras().getString(Constants.KEY_DIRECTIONS);
            byte[] imageBytes = intent.getByteArrayExtra(Constants.KEY_IMAGE);
            ListItem newObject = new ListItem(name,kategory,ingredients,directions, imageBytes);
            receptDB.insertReceptItem(newObject);
            refreshListView();
        }
    }

   //View updaten
    //hier immer auch bild rausnehmen, wenn kein photo dann das was bereits gesetzt ist?
    private void refreshListView() {
        Cursor cursor = receptDB.getAllRows();
        String[] fromFieldNames = new String[] {DatabaseAdapter.KEY_NAME, DatabaseAdapter.KEY_KATEGORY};
        int[] toViewIDs = new int[] {R.id.receptName, R.id.kategory};
        SimpleCursorAdapter myCursorAdapter;
        myCursorAdapter = new SimpleCursorAdapter(getBaseContext(), R.layout.activity_list_item, cursor, fromFieldNames, toViewIDs, 0);
        ListView myList = (ListView) findViewById(R.id.listItem);
        myList.setAdapter(myCursorAdapter);
    }

    //zuvor fragen!!
    private void removeTaskAtPosition(long id) {
        receptDB.deleteItem(id);
        refreshListView();
    }

    // convert from bitmap to byte array
    public static byte[] getBytes(Bitmap bitmap) {
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 0, stream);
        return stream.toByteArray();
    }

    // convert from byte array to bitmap
    public static Bitmap getImage(byte[] image) {
        return BitmapFactory.decodeByteArray(image, 0, image.length);
    }

    private void alertDialogDelete(long id){
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        sensorMgr.unregisterListener(listener);
        final long _id = id;
        builder.setMessage("Bist du dir sicher, dass du dieses Rezept löschen willst?");
        builder.setPositiveButton("JA", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                removeTaskAtPosition(_id);
                dialog.dismiss();
            }
        });
        builder.setNegativeButton("NEIN", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });
        AlertDialog alert = builder.create();
        setupSensor();
        alert.show();
    }

//ondestroy stürzt schüttelsensor ab

    //schummeln we
    @Override
    public void onSensorChanged(SensorEvent event) {
        if (receptDB.getAllRows().getCount() != 0) {
            if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
                long curTime = System.currentTimeMillis();
                if ((curTime - mLastShakeTime) > MIN_TIME_BETWEEN_SHAKES_MILLISECS) {

                    float x = event.values[0];
                    float y = event.values[1];
                    float z = event.values[2];

                    double acceleration = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2) +
                            Math.pow(z, 2)) - SensorManager.GRAVITY_EARTH;

                    if (acceleration > SHAKE_THRESHOLD) {
                        alertDialogRandomRecept(curTime);
                    }
                }
            }
        }
    }

    private void alertDialogRandomRecept(final long curTime) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage("Willst du ein zufälliges Rezept angezeigt bekommen?");
        sensorMgr.unregisterListener(listener);
        builder.setPositiveButton("JA", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                mLastShakeTime = curTime;
                randomRecept();
                dialog.dismiss();
            }
        });
        builder.setNegativeButton("NEIN", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });


        AlertDialog alert = builder.create();
        alert.show();
    }

    //wenn nur eins drin stürzt ab
    private void randomRecept() {
        Random random = new Random();
        long randomLong = (long) random.nextInt(receptDB.getAllRows().getCount()) + 1;
        openObject(randomLong);
    }

    private void openObject(long id) {
        sensorMgr.unregisterListener(listener);
        Intent openObject = new Intent(List_Page.this, Open_Object.class);
        Cursor itemToOpen = receptDB.getRow(id);
        if( itemToOpen != null && itemToOpen.moveToFirst() ) {
            openObject.putExtra(Constants.KEY_RECEPT_NAME, itemToOpen.getString(1));
            openObject.putExtra(Constants.KEY_KATEGORY, itemToOpen.getString(2));
            openObject.putExtra(Constants.KEY_INGREDIENTS, itemToOpen.getString(3));
            openObject.putExtra(Constants.KEY_DIRECTIONS, itemToOpen.getString(4));
            openObject.putExtra(Constants.KEY_IMAGE, itemToOpen.getBlob(1));
            startActivity(openObject);
            finish();
        }
        itemToOpen.close();
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int i) {

    }

    private AdapterView.OnItemLongClickListener longClickListener = new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view,
                                       int position, long id) {
            alertDialogDelete(id);
            return true;
        }
    };

    private AdapterView.OnItemClickListener clickListener = new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            openObject(l);
        }
    };
}

Meine Activity in der das Bild gemacht wird:

Code:
    private EditText ingredients, directions, receptName;
    String newIngredientsText, newDirectionsText , newReceptNameText, newKategoryText;
    private Spinner kategory;
    private Bitmap bitmap;
    private Uri fileUri;
    private ImageView photo;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_object);
        setupViews();
        setupButtons();
        checkIntent();
        checkCameraAvailability();

    }


    //onClick Listeners auf die drei Buttons
    private void setupButtons() {
        Button addItemButton = (Button) findViewById(R.id.backButton);
        addItemButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                backButtonClicked();
            }
        });

        Button addImageButton = (Button) findViewById(R.id.addImageButton);
        addImageButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                captureImage();
            }
        });

        Button saveButton = (Button) findViewById(R.id.save_button);
        saveButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                saveButtonClicked();
            }
        });
    }


    //zurück auf die List_Page springen wenn der back button geklickt ist
    private void backButtonClicked() {
        Intent backIntent = new Intent(Add_Object.this, List_Page.class);
        startActivity(backIntent);
        finish();
    }

    @Override
    public void onBackPressed() {
        super.onBackPressed();
        backButtonClicked();
    }

    private void checkIntent() {
        Intent i = getIntent();
        if (i.hasExtra(Constants.KEY_RECEPT_NAME)){
            receptName.setText(i.getExtras().getString(Constants.KEY_RECEPT_NAME));
            //kategory.setSelection(equals(Constants.KEY_KATEGORY));
            ingredients.setText(i.getExtras().getString(Constants.KEY_INGREDIENTS));
            directions.setText(i.getExtras().getString(Constants.KEY_DIRECTIONS));
        }
    }

    private void checkCameraAvailability() {
        // Checking camera availability
        if (!isDeviceSupportCamera()) {
            Toast.makeText(getApplicationContext(),
                    "Sorry! Your device doesn't support camera",
                    Toast.LENGTH_LONG).show();
            finish();
        }
    }

    //Eingabedaten speichern wenn der speichern-Button geklickt wird
    private void saveButtonClicked() {
        //handle Entry
        getEntries();

        //check if
        if(ingredients != null && ! TextUtils.isEmpty(newIngredientsText.trim()) &&
                directions != null && ! TextUtils.isEmpty(newDirectionsText.trim()) &&
                receptName !=  null && ! TextUtils.isEmpty(newReceptNameText.trim()))  {
            backAndSaveIntent();

            //handle no input case
        }else{
            //create and show toast
            Toast toast = Toast.makeText(this, R.string.noEntryToast, Toast.LENGTH_SHORT);
            toast.show();

        }

    }

    private void resetViews() {
        directions.setText("");
        ingredients.setText("");
        receptName.setText("");
        //photo.setImageResource(android.R.color.transparent);
    }

    private void backAndSaveIntent() {
        Intent backAndSaveIntent = new Intent(Add_Object.this, List_Page.class);
        backAndSaveIntent.putExtra(Constants.KEY_DIRECTIONS, newDirectionsText);
        backAndSaveIntent.putExtra(Constants.KEY_INGREDIENTS, newIngredientsText);
        backAndSaveIntent.putExtra(Constants.KEY_RECEPT_NAME, newReceptNameText);
        backAndSaveIntent.putExtra(Constants.KEY_KATEGORY, newKategoryText);
        backAndSaveIntent.putExtra(Constants.KEY_IMAGE, getBytes(bitmap));
        resetViews();
        startActivity(backAndSaveIntent);
        finish();
    }
    // convert from bitmap to byte array
    public static byte[] getBytes(Bitmap bitmap) {
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 0, stream);
        return stream.toByteArray();
    }

    private void setupViews() {
        ingredients = (EditText) findViewById(R.id.enterIngredients);
        directions = (EditText) findViewById(R.id.enterDirections);
        receptName = (EditText) findViewById(R.id.receptName);
        kategory = (Spinner)  findViewById(R.id.kategory_spinner);
        photo = (ImageView) findViewById(R.id.photoView);
    }

    public void getEntries() {
        newIngredientsText = ingredients.getText().toString();
        newDirectionsText = directions.getText().toString();
        newReceptNameText = receptName.getText().toString();
        newKategoryText = kategory.getSelectedItem().toString();
    }

    private boolean isDeviceSupportCamera() {
        if (getApplicationContext().getPackageManager().hasSystemFeature(
                PackageManager.FEATURE_CAMERA)) {
            return true;
        } else {
            return false;
        }
    }

    private void captureImage() {
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
        // start the image capture Intent
        startActivityForResult(intent, Constants.CAMERA_REQUEST_CODE);
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putParcelable(FILE_URI, fileUri);
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        fileUri = savedInstanceState.getParcelable(FILE_URI);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == Constants.CAMERA_REQUEST_CODE) {
            if (resultCode == RESULT_OK) {
                previewCapturedImage();
            } else if (resultCode == RESULT_CANCELED) {
                Toast.makeText(getApplicationContext(),R.string.cameraCanceltToast, Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(getApplicationContext(), R.string.cameraFailedToast, Toast.LENGTH_SHORT).show();
            }
        }
    }

    private void previewCapturedImage() {
        try {
            photo.setVisibility(View.VISIBLE);
            BitmapFactory.Options options = new BitmapFactory.Options();
            options.inSampleSize = 8;
            bitmap = BitmapFactory.decodeFile(fileUri.getPath(), options);
            photo.setImageBitmap(bitmap);
        } catch (NullPointerException e) {
            e.printStackTrace();
        }
    }

    public Uri getOutputMediaFileUri(int type) {
        return Uri.fromFile(getOutputMediaFile(type));
    }

    private static File getOutputMediaFile(int type) {
        File mediaStorageDir = new File(
                Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), IMAGE_DIRECTORY_NAME);
        // Create the storage directory if it does not exist
        if (!mediaStorageDir.exists()) {
            if (!mediaStorageDir.mkdirs()) {
                Log.d(IMAGE_DIRECTORY_NAME, "Oops! Failed create " + IMAGE_DIRECTORY_NAME + " directory");
                return null;
            }
        }
        // Create a media file name
        String timeStamp = new SimpleDateFormat(DATE_FORMAT, Locale.getDefault()).format(new Date());
        File mediaFile;
        if (type == MEDIA_TYPE_IMAGE) {
            mediaFile = new File(mediaStorageDir.getPath() + File.separator + "IMG_" + timeStamp + ".jpg");
        } else {
            return null;
        }
        return mediaFile;
    }
}
 
Allerdings weiß ich nicht wie ich das jeweilige Bild im ListView anzeigen lassen kann. Beziehungsweise wenn kein Bild gemacht wurde, ein Platzhalterbild anzeigen lasse. Dieses ist bereits in meinem Layout vorhanden, soll also nur gegebenenfalls mit einem selbst gemachten Bild überschrieben werden

Ich beziehe mich auf deine erste Frage und da steht eigentlich schon die Antwort :
Du solltest am besten eine CustomAdapter verwenden.

P.S den ListView solltest du auch in eine ReycleView auswechseln - Und weit Schicker für dein Vorhaben wären dann genstete
CarViews .
[doublepost=1502640771,1502640665][/doublepost]Hier ein Beispiel aus einer meiner Apps
_screen_1.png
 
Hallo Stefan,

danke für deine Tipps!
Bitte entschuldige als Anfänger meine Frage, aber ist mein ListViewAdapter kein CostumAdapter?
Ich bin mir hier nur unsicher wie ich am besten das Bild einbaue.


Code:
public class ListViewAdapter extends ArrayAdapter<ListItem> {

    private List<ListItem> itemList;
    private Context context;

    public ListViewAdapter(Context context, List<ListItem> itemList) {
        super(context, R.layout.activity_list_item, itemList);
        this.context = context;
        this.itemList = itemList;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View v = convertView;

        if (v == null) {
            LayoutInflater vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.activity_list_item, null);
        }

        TextView receptName = (TextView) v.findViewById(R.id.receptName);
        TextView kategory = (TextView) v.findViewById(R.id.kategory);
        ImageView image = (ImageView) v.findViewById(R.id.receptImage);

       //Daten in layout
        ListItem item = itemList.get(position);

        //Zutaten und Anweisungen speicher
        String ingredients = item.getIngredients();
        String directions = item.getDirection();
        byte[] imageBytes = item.getImage();


        //set data here
        receptName.setText(item.getName());
        kategory.setText(item.getKategory());
        image.setImageBitmap(getImage(imageBytes));

        return v;
    }

    // convert from byte array to bitmap
    public static Bitmap getImage(byte[] image) {
        return BitmapFactory.decodeByteArray(image, 0, image.length);
    }

}

LG
Sabey
 
Wir kommen der Sache schon näher und ich bekomme auch einen Überblick :)
Ja, du hast einen CustomAdapter - insofern auch dort alles OK .

Jetzt stellt sich die Frage , warum du irgendwo dein Array leer machst und dadurch kein Element mehr drin hast .

P.S das Speicherproblem und dem Bitmap bleibt allerdings.

Schau dir mal Glide an - schöne Bibliothek , die LRUCache schon drin hat
GitHub - bumptech/glide: An image loading and caching library for Android focused on smooth scrolling

(Verwende ich eigentlich immer)
[doublepost=1502642919,1502642764][/doublepost]So und nun muss ich mal herunterbrechen , damit hier nicht der Überblick fehlt :

a) Können wir uns erst mal auf einen Thread beschränken ?
b) Könntest du mal nur den Teil Source posten , wo du die Übergabe des Arrays an den Adapter machst ?
Ist das auch ein StructArray ? oder nur ein StringArray ???
 
Danke ich schau mir Glide mal an.

Und wir können uns auf diesen Thread beschränken. Dachte nur dass es zwei unterschiedliche Probleme sind und ich sie deshalb besser aufteile.

Hier der Code:
Code:
   private void refreshListView() {
    Cursor cursor = receptDB.getAllRows();
    String[] fromFieldNames = new String[] {DatabaseAdapter.KEY_NAME, DatabaseAdapter.KEY_KATEGORY};
    int[] toViewIDs = new int[] {R.id.receptName, R.id.kategory};
    SimpleCursorAdapter myCursorAdapter;
    myCursorAdapter = new SimpleCursorAdapter(getBaseContext(), R.layout.activity_list_item, cursor, fromFieldNames, toViewIDs, 0);
    ListView myList = (ListView) findViewById(R.id.listItem);
    myList.setAdapter(myCursorAdapter);
}
 
Nein , wir bleiben bei diesem Thread, denn einen Intent an ein ListView gibt es nicht und du hast grundsätzlich ein
Verständnisproblem mit Arrays und ListView.

ABER : Für einen Anfänger schon ganz ordentlich , was du abgeliefert hast :)

Wir fangen mal an :
Wenn ich das richtig verstehe, magst du irgendwo eine Liste haben , die Dir ein Image und einen Kurztext anzeigt.
Also zwei Elemente - richtig ? - Wenn nicht, brauche ich mal alle Elemente, die du im ListView brauchst.
Dann mag ich Wissen , wo dein Image gespeichert ist ( hoffentlich lecker !!!! )

Schreib mir das mal hierher und gib mir ein paar Minuten ,dann "bastel" ich dir mal was zusammen
(Viel text)
 
  • Danke
Reaktionen: markus.tullius
Ja ich möchte in meiner MainActivity eine Liste haben die mir das Bild, den Namen und die Kategorie anzeigt. Anbei einen Screenshot wie es bisher aussieht. Momentan ist da noch ein Platzhalterbild.
Das Bild übergebe ich aus meiner zweiten Activity über Intent.putExtra(Constants.KEY_IMAGE, getBytes(bitmap)); also durch einen byteArray, weil ich dachte das ist am einfachsten.
Den Intent wollte ich dann in meiner MainActivity abfangen, Andere Strings wie Zutaten und Anweisungen speichere ich und Kategorie & Name lass ich anzeigen. Mit den Strings klappt das auch schon, nur wird weiter das Platzhalterbild angezeigt, weil ich nicht weiß wie ich mein Bild anzeigen lassen kann. Ich hab auch schon eine Methode die den Array (.getByteArray(Constants.KEY_IMAGE) ) wieder zu einer Bitmap umwandelt.
Da ich aber meine Datenbank und Adapter jetzt schon drauf programmiert habe, dass sie ein Bild erwarten, stürzt die App momentan ab, wenn ich keines aufnehme. Hier soll aber ja weiter das Platzhalterbild angezeigt werden.

Hier nehme ich mir alle Daten aus meinem Intent:
Code:
private void addObject(){
        Intent intent = getIntent();
        if (intent.hasExtra(Constants.KEY_RECEPT_NAME)) {
            String name = intent.getExtras().getString(Constants.KEY_RECEPT_NAME);
            String kategory = intent.getExtras().getString(Constants.KEY_KATEGORY);
            String ingredients = intent.getExtras().getString(Constants.KEY_INGREDIENTS);
            String directions = intent.getExtras().getString(Constants.KEY_DIRECTIONS);
            byte[] imageBytes = intent.getByteArrayExtra(Constants.KEY_IMAGE);
            ListItem newObject = new ListItem(name,kategory,ingredients,directions, imageBytes);
            receptDB.insertReceptItem(newObject);
            refreshListView();
        }
    }
[doublepost=1502650490,1502645306][/doublepost]Ich habe das Problem nun so gelöst:

Code:
    private void refreshListView() {
        Cursor cursor = receptDB.getAllRows();
        String[] fromFieldNames = new String[] {DatabaseAdapter.KEY_NAME, DatabaseAdapter.KEY_KATEGORY, DatabaseAdapter.KEY_IMAGE};
        int[] toViewIDs = new int[] {R.id.receptName, R.id.kategory, R.id.receptImage};
        SimpleCursorAdapter myCursorAdapter;
        myCursorAdapter = new SimpleCursorAdapter(getBaseContext(), R.layout.activity_list_item, cursor, fromFieldNames, toViewIDs, 0);
        // Override the handling of R.id.icon to load an image instead of a string.
        myCursorAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
            public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
                if (view.getId() == R.id.receptImage) {
                    // Get the byte array from the database.
                    byte[] iconByteArray = cursor.getBlob(columnIndex);

                    // Convert the byte array to a Bitmap beginning at the first byte and ending at the last.
                    Bitmap iconBitmap = BitmapFactory.decodeByteArray(iconByteArray, 0, iconByteArray.length);

                    // Set the bitmap.
                    ImageView iconImageView = (ImageView) view;
                    iconImageView.setImageBitmap(iconBitmap);
                    return true;
                } else {  // Process the rest of the adapter with default settings.
                    return false;
                }
            }
        });
        ListView myList = (ListView) findViewById(R.id.listItem);
        myList.setAdapter(myCursorAdapter);
    }

Jetzt bleibt nurnoch die Frage, wieso ich eine OutOfBounce bekomme wenn ich alle Elemente lösche und neue anlege.
 

Anhänge

  • 20770303_1604462782920484_3424254879383972370_n.jpg
    20770303_1604462782920484_3424254879383972370_n.jpg
    23,1 KB · Aufrufe: 310
Zurück
Oben Unten