Gridview eintrag markieren

  • 7 Antworten
  • Letztes Antwortdatum
Z

zblack

Gast
Hallo Android Freunde.
Ich möchte folgendes tun:
In meiner App benutze ich Gridview und die Klasse BaseAdapter für die Bilder der Gridview.
Meine App besteht aus 3 Klassen. Die eine stellt die Bildergalerie dar, die Adapterklasse und die Klasse die das Einzelbild darstellt.
Ich möchte in der Gridview auf das Bild klicken und das Bild in einem anderen Fenster sehen. Wenn ich auf zuruckbutton des Handys klicke, möchte ich dass das geklickte Bild in der GridView markiert wird (egal wie) damit ich weiss welches Bild ich angeklickt habe. Ich möchte nur ein Bild markieren (immer das was ich als letztes angeklickt habe).
Kann mir jemand helfen ??? bisher habe ich nichts sinvolles dadrüber gefunden.
MfG.
 
id des bildes merken und status dementsprechend setzen ...
 
also wenn du ein Bild anklickst, müsste ja was passieren (Listener oder ähnliches) Mit diesem Event kannst du dir die ID des Bildes (Objektes) geben lassen, diese ID merkst du dir und sagst beim nächsten aufruf. Bild mit ID xxx ist markiert. Wenn man ein Imagebutton klickt bekommt dieser doch einen blauen rand (markierter zustand) du müsstest dann halt mit den android:focused arbeiten
 
Meine Adapterklasse:
Code:
public class MainActivity extends Activity implements OnItemClickListener {

    BildAdapter adapter;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        GridView galerie = (GridView) findViewById(R.id.mygv);
        adapter = new BildAdapter(this);
        galerie.setAdapter(adapter);
        
        galerie.setOnItemClickListener(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        // TODO Auto-generated method stub
        int resid = (Integer) adapter.getItem(arg2);

        Intent intent = new Intent(this, Bild.class); 
        intent.putExtra("resId", resid);
        startActivity(intent);
    }
}
meine Einzelbildklasse:
Code:
package com.example.testgv;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.widget.ImageView;

public class Bild extends Activity {

    int resid ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.bildlayout);
        
        
        if (getIntent() != null) {
            Bundle daten = getIntent().getExtras();
            if (daten != null) {
                resid = daten.getInt("resId");
                
                ImageView bild = (ImageView) findViewById(R.id.bildiv);
                bild.setImageResource(resid); 
            }
        }
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        if (keyCode == KeyEvent.KEYCODE_BACK){
        Intent i = new Intent(this, MainActivity.class);
        i.putExtra("resId", resid);
        Log.i("Übergeben", " " + resid );
        }
        return super.onKeyDown(keyCode, event);
    }
}
meine Mainklasse:
Code:
public class MainActivity extends Activity implements OnItemClickListener {

    BildAdapter adapter;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        GridView galerie = (GridView) findViewById(R.id.mygv);
        adapter = new BildAdapter(this);
        galerie.setAdapter(adapter);
        
        galerie.setOnItemClickListener(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        // TODO Auto-generated method stub
        int resid = (Integer) adapter.getItem(arg2);

        Intent intent = new Intent(this, Bild.class); 
        intent.putExtra("resId", resid);
        startActivity(intent);
    }
}
Ich versuche aus der einzelbildklasse die id des Bildes zu übergeben. Das klappt aber nicht. Nicht mal die Ausgaben erscheinen in Log.
 
Hast du es schonmal mit onActivityForResult probiert? Bzw sagt dir das was?
 
Hi,

Ich bin mir nicht hundertprozenitg sicher, aber ich denke das müsste klappen:

Schreibe in deine EinzelbildActivity
Code:
public static String Beispielname;
Dann änderst du den Code so:
Code:
  if (getIntent() != null) {
            Bundle daten = getIntent().getExtras();
            if (daten != null) {
                resid = daten.getInt("resId");
 
                ImageView bild = (ImageView) findViewById(R.id.bildiv);
                bild.setImageResource(resid); 
 
                Beispielname = bild;  
 
            }
Und da wo du das Bild makieren willst schreibst du das:
Code:
[Code fürs markieren des Bildes].Bild.beispielname 
//Bild = Name der EinzelBild-Activity

Ich hoffe das klappt:D
 
Madlip schrieb:
Hast du es schonmal mit onActivityForResult probiert? Bzw sagt dir das was?

von onActivityForResult habe ich schon was gehört, habe aber noch nie was mit onActivityForResult gemacht.:o
 

Ähnliche Themen

P
Antworten
13
Aufrufe
540
Peter18
P
Zurück
Oben Unten