Brauche dringend Hilfe!!! Implementieren von Listview in adapter...

  • Antworten:41
  • GeschlossenBentwortet
Chero Beam
  • Forum-Beiträge: 37

18.09.2015, 18:02:21 via Website

Hallo guys,

ich habe ein Riesenproblem! Ich bekomm es nicht hin von meiner main.xml die listview sowie aus meinem customlayout die imageview in meinen Adapter zu implementieren!!! Da ich dies nicht kann habe ich das problem das meine imageview in meinem customlayout nicht erkannt wird und ich nicht in der lage bin das Bild ausgesucht aus der Gallery in die imageview zu setzen! Es kommt nur ganz kurz zum Vorschein in der imageview und verschwindet danach sofort wieder(das Bild!!!)!!!

Bitte dringend um Hilfe und jemand der mich leitet meinen adapter zu modifizieren.

Dsa ist mein Adapter...

public class RecipesAdapter extends ArrayAdapter {

protected List<ParseObject> mRecipes;
public Context mContext;

public RecipesAdapter(Context context, List<ParseObject> comment) {

    super(context, R.layout.recipes_customlayout, comment);
    mContext = context;
    mRecipes = comment;

}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {

    ViewHolder holder;

    if (convertView == null) {
        convertView = LayoutInflater.from(mContext).inflate(
                R.layout.recipes_customlayout, null);

        holder = new ViewHolder();

        holder.imgPic = (ParseImageView) convertView.findViewById(R.id.img_recipes);
        holder.username_recipesChat = (TextView) convertView.findViewById(R.id.row_username_recipes);
        holder.message_recipesChat = (TextView) convertView.findViewById(R.id.row_message_recipes);

        convertView.setTag(holder);

    } else {

        holder = (ViewHolder) convertView.getTag();

    }

    ParseObject recipesObject = mRecipes.get(position);

    String username = recipesObject.getString("user");
    holder.username_recipesChat.setText(username);

    String message = recipesObject.getString("commentStatus");
    holder.message_recipesChat.setText(message);

    return convertView;
}

public static class ViewHolder {

    TextView username_recipesChat;
    TextView message_recipesChat;
    ParseImageView imgPic;

}

}

Listview in main layout...

android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/android:list"
android:paddingLeft="5dp"
android:divider="@null"
android:dividerHeight="0dp"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_above="@+id/add_text" />

Imageview in Customlayout...

android:layout_width="match_parent"
android:layout_height="200dp"
android:id="@+id/img_recipes"
android:paddingRight="5dp"
android:background="@drawable/button_border"
android:contentDescription="@string/title_activity_recipes_ideas" />

— geändert am 18.09.2015, 18:11:34

Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

18.09.2015, 20:40:41 via App

Wo setzt du denn in der GetView die Resource für das Bild. Da fehlt doch was.

PS: Du kannst dir das Brauche Hilfe in deinem titel sparen. Danke ;)

— geändert am 18.09.2015, 20:41:26

LG Pascal //It's not a bug, it's a feature. :) ;)

Chero Beam
  • Forum-Beiträge: 37

19.09.2015, 11:12:18 via Website

Dsa ist ja die Sache, das bild kommt aus der gallery und ich weiss nicht wie ich das in meinem adapter einfügen kann ebenso wie die listview...
weisst du wie so etwas geht?

— geändert am 19.09.2015, 11:13:02

Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.09.2015, 12:27:35 via App

Ja das ist nicht so swierig, aber wenn man das so umsetzt würde in jeder Zeile der ListView das gleiche bild aus der Gallerie angezeigt werden. und das willst du doch nicht oder?
Geht es hierbei immernoch um die Profilbild sache?
Wenn ja erzähl mal wie du das jetzt gelöst hast, denn eigentluch müssten die Bilder ja dann aus deinem ParseObjekt kommen.

LG Pascal //It's not a bug, it's a feature. :) ;)

Chero Beam
  • Forum-Beiträge: 37

19.09.2015, 12:40:30 via Website

Nein, es geht nicht mehr um das profilbild sondern um eine neue activity wo der user die möglichkeit hat ein bild mit einem kommentar an eine wall zu posten! So wie Facebook und deswegen muss ich die listview und imageview gut in meinem Adapter implementieren und genau das weiss ich nicht wie das geht!??? Kannst du mir dabei irgendwie helfen wie ich da vorgehen muss?

— geändert am 19.09.2015, 12:42:34

Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.09.2015, 13:25:01 via Website

Ok dann erstmal der Reihe nach:
- Welche Funktionen soll die Activity später haben?

  • BildUpload oder nur Bild anzeigen oder Beides?
    • Wie ist es gedacht, soll in der ListView nachher so eine Art Pinnwand (Verlauf ö.ä. stehen), wenn ja dann musst du das Bild aus deinem ParseObjekt laden, sonst aus der Galerie

ich würde den Upload/Post Part und den anzeigepart logisch voneinander trennen (kann in einer Activity sein) aber du darfst das nicht ducheinanderbringen.

Die ListView ist nur zum Anzeigen gedacht. Das Hochladen macht man irgendwie anders, deswegen muss die ListView bzw. der Adapter auch nicht dafür ausgelegt werden.

Hast du ein schlüssiges Konzept dafür oder habe ich es einfach nur noch nicht versteanden?

LG Pascal //It's not a bug, it's a feature. :) ;)

Chero Beam
  • Forum-Beiträge: 37

19.09.2015, 13:50:06 via Website

Also, es ist so eine art pinnwand wo jeder ein bild mit kommentar posten kann! Das bild wird aus der gallery geladen und dann an die pinnwand gesetzt! Das Bild wird aber auch auf den server hochgeladen und später dann gefetcht vom server! Sobald ich auf den senden button drücke wird das bild zum server hochgeladen!

— geändert am 19.09.2015, 13:55:05

Chero Beam
  • Forum-Beiträge: 37

19.09.2015, 13:50:38 via Website

Hast du schon gut verstanden ;)

Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.09.2015, 14:01:16 via Website

ok dann würde ich aber das ganze allgemein machen und sagen, dass der Adapter nur das Bild vom Server laden muss.

Das hochladen aus der Gallerie musst du dann extra machen. Kann die gleiche Activity sein, aber sowwas kommt nicht in den Adapter mit rein.

Das vom Server laden in die ListView solltest du ja hinbekommen, läuft ja so wie immer bei dir ab. Hattest es ja schomal an anderer stelle gemacht.
Jetzt willst du das Bild aus der Gallerie. Dafür musst du die Galerie öffnen und dem User die Auswahl geben, welche Bilder bzw. welches Bild.

Dafür öffnet man ein intent und erwartet dann in der Activity den Result:

Intent pickPhoto = new Intent(Intent.ACTION_PICK,
                                       android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                            startActivityForResult(pickPhoto , 1);//one can be replaced with any action code

Dann musst du nur noch den ActivityResult auserten:

 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data); 
    switch(requestCode) {

    case 1:
        if(resultCode == RESULT_OK){  
            Uri selectedImage = data.getData();
            String path = getPath(selectedImage);
       //use the String "path" to upload Picture or load it into imageView

        }
    break;
    }
    }

und hier noch die getPath(...) Methode:

 public String getPath(Uri uri) 
    {
        String[] projection = { MediaStore.Images.Media.DATA };
        Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
        if (cursor == null) return null;
        int column_index =             cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        String s=cursor.getString(column_index);
        cursor.close();
        return s;
    }

Du kannst auch einfach hier im Beispiel schauen: http://paragchauhan2010.blogspot.de/2012/05/choose-image-from-gallary-and-display.html

LG Pascal //It's not a bug, it's a feature. :) ;)

Chero Beam
  • Forum-Beiträge: 37

19.09.2015, 14:18:58 via Website

Hey Pascal, dazu bin ich schon in der Lage und habe ich schon in meiner activity eingebaut! Ich kann das bild aus meiner gallery auswählen und in die imageview setzen aber es verschwindet sofort wieder! Das Problem ist das ich meinen ADAPTER nicht richtig konfiguriert habe mit der imageview! Oben weiter habe ich meinen aadapter gepostet vielleicht kannst du dir den mal ansehen und mir erklären wie ich das mit der imageview machen muss!

Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.09.2015, 14:22:55 via Website

Siehst du das meinte ich mit strikter Trennung der beiden Funktionen.
Diese sollten komplett unabhängig sein:
1. Du hast einen Upload, da wählst du das Bild aus und wird auf den Server geladen.
2. Du hast eine listView die holt sich alle Daten + Bilder vom Server

Sobald das bild hochgeladen ist, aktualisierst du die ListView und das Bild + Text ist da, ich würde das nicht direkt in den Adapter setzen, macht wenig sinn ,wenn du das Bild eh hochlädst.

Zudem muss die listView bzw de Adapter garnichts von dem Galleriebild wissen, denn die Daten bekommt er j vom Server

LG Pascal //It's not a bug, it's a feature. :) ;)

Chero Beam
  • Forum-Beiträge: 37

19.09.2015, 14:37:04 via Website

Ok, cool, das versteh ich! Wie kann ich aber den adapter modifizieren das er die imageview erkennt?

Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.09.2015, 14:42:05 via Website

Wie imageView erkennt?
Die hast du doch schon drinne:

 holder.imgPic = (ParseImageView) convertView.findViewById(R.id.img_recipes);

Du musst nur holder.imgPic benutzen und dann darauf dein heruntergeladenes Bild setzen.
Was ist daran das Problem?

LG Pascal //It's not a bug, it's a feature. :) ;)

Chero Beam
  • Forum-Beiträge: 37

19.09.2015, 14:52:19 via Website

Ich bin so durcheinander, nicht zu glauben!!! Ich lade das bild von der gallery also von einem filepath. wie kann ich das in meinem adapter dann benutzen? so...? holder.imgPic.setImageBitmap(filepath); ?

Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.09.2015, 14:59:46 via Website

Wie oft denn noch
Ich habe gesagt, es ist einfach das Bild vom SERVER zu holen. D.h. du musst das bild nicht von einem FilePath laden sondern von einer URL oder aus deinem ParseObjekt!

und sonst:http://stackoverflow.com/questions/15814638/how-to-set-an-image-to-imageview-using-filepath-in-android

LG Pascal //It's not a bug, it's a feature. :) ;)

Chero Beam
  • Forum-Beiträge: 37

19.09.2015, 15:33:52 via Website

Sorry, steh ein wenig auf der Leitung, das mit dem Adapter macht mich total durcheinander! Sorry, hab ein wenig geduld mit mir...:)
Eine frage hätte ich noch wenns dir nichts ausmacht. Wie kann ich die listview aus meiner main xml in den adapter integrieren?

Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.09.2015, 16:00:40 via Website

Garnicht.
So wie ich ds sehe, dast du den Sinn eines Adapters noch nich verstanden ;)
Lies dir am besten etwas dazu durch.

Ein Adapter sorgt dür das einsetzten der Daten in ein passendes Layout einesetzt werden. Du definierst einmal das Layout für ein item und das wird dann immer wieder mit den entsprechenden Daten gefült.

Die main xml soll da garnicht rein, die musst du in der Activity setzen und dann dein ListView Objekt per findViewById lesen

LG Pascal //It's not a bug, it's a feature. :) ;)

Chero Beam
  • Forum-Beiträge: 37

19.09.2015, 16:38:48 via Website

Ich habe schon mehrere adapter gebaut aber da ich das bild diesmal von der gallery hole und nicht aus dem res habe ich diese probleme...
Mein kollege sagt das vielleicht sagt dir das was... Schau

Chero Beam
15.09.2015

Ich:
I am be able to see the imageview in my app but when i choose a image from the gallery an want to set it into the imageview it says null....

Kollege:
Yes because your ImageView is inside a ListView and a ListView is populated later, after the Activity creation. So if you do findViewById() in onCreate() the view does not exist yet and the method returns null. The best place to grab the reference is from the Adapter.
When you get back your image reference, store it and call notifyDataSetChanged() on your adapter to refresh the ListView content.
In the adapter, set the image reference on your ImageView if you have it, or show the default image if you don't.

Kannst du damit was anfangen, was er sagt?

Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.09.2015, 16:54:15 via Website

Ja aschon, aber warum das ganze wenn es doch auch einfacher geht.
Langsam wirds mühsam ;)

  1. Warum hälst du immernoch an deinem alten Plan fest und willst das Bild über die Gallierie laden?
  2. Warum kannst du mit der Aussage deines Kollegen nichts angangen ;)
  3. ich gebe dir mal eine Gedankenstütze:

@Override
public View getView(final int position, View convertView, ViewGroup parent) {

ViewHolder holder;

if (convertView == null) {
    convertView = LayoutInflater.from(mContext).inflate(
            R.layout.recipes_customlayout, null);

    holder = new ViewHolder();

    holder.imgPic = (ParseImageView) convertView.findViewById(R.id.img_recipes);
    holder.username_recipesChat = (TextView) convertView.findViewById(R.id.row_username_recipes);
    holder.message_recipesChat = (TextView) convertView.findViewById(R.id.row_message_recipes);

    convertView.setTag(holder);

} else {

    holder = (ViewHolder) convertView.getTag();

}

ParseObject recipesObject = mRecipes.get(position);

String username = recipesObject.getString("user");
holder.username_recipesChat.setText(username);

*ParseFile image = recipesObject.getParseFile("image");
holder.imgPic.setParseFile(image);
*

String message = recipesObject.getString("commentStatus");
holder.message_recipesChat.setText(message);

return convertView;

}

Das würde an der stelle schon fast reichen.
Du musst halt über deine Schnittstelle das Bild bekommen und dann entsprechend auf die View setzen.

Unabhänig davon machst du dann den Bilder Upload.

So jetzt verstanden?
Wenn nein, was konkret nicht?

— geändert am 19.09.2015, 16:54:31

LG Pascal //It's not a bug, it's a feature. :) ;)

Chero Beam
  • Forum-Beiträge: 37

19.09.2015, 17:30:05 via Website

Dsa habe ich verstanden Pascal, aber was ich nicht verstehe ist das wenn ich das bild aus der Gallery aussuche und es in die imageview setze, erscheint es nur für ca.2 sek in der imageview und verschwindet dann wieder!!! Normalerweise bleibt das bild in der imageview aus dem grund, weil der user sich natürlich erst das bild ansehen soll und bei bedarf auch wechseln kann! Erst dann wenn er damit zufrieden ist lädt der user das bild auf den server! Aber das dass Bild sofort wieder verschwindet ist nicht normal! Wenn du ein bild postest dann bleibt es ja auch in der Imageview und vielleicht setzt du noch einen kommentar drunter und dann erst schickst dus ab!

Vielleicht umgehe ich den adapter und dann überschreibt der Adapter wieder die änderungen(das bild, weil es sofort wieder verschwindet und logcat gibt mir auch keine fehlermeldungen) wenn die listview geupdated wird!!!

Verstehst du was ich meine???

Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.09.2015, 17:32:24 via Website

Jup das ist richtig, der Adapter überschreibt das View wieder!
Deswgen hab ich gemeint, macht das unabhängig in eriner Art PopUp oder overlayFragment ö.ä. aber nicht in der ListView

LG Pascal //It's not a bug, it's a feature. :) ;)

Chero Beam

Chero Beam
  • Forum-Beiträge: 37

19.09.2015, 17:56:15 via Website

wie krieg ich das hin das der Adapter das NICHT überschreibt? Wie kann ich den adapter modifizieren? Weil das ist das was ich gerne verändern möchte!

— geändert am 19.09.2015, 17:56:58

Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.09.2015, 17:58:56 via Website

Da kommt es darauf an in welchem element du das Bild setzt. Dann müsstest du über Ifs da ausnahmen rein bauen.
Wie genau kann ich dir ohne expliziten Code nicht sagen.
Poste den Code mal bitte

LG Pascal //It's not a bug, it's a feature. :) ;)

Chero Beam
  • Forum-Beiträge: 37

19.09.2015, 18:00:56 via Website

ok, hier kommt die activity....

public class RecipesIdeas extends ListActivity implements View.OnClickListener {

protected EditText mRecipesChat;
protected Button mSendRecipesBtn;
protected Button mSendPicBtn;
protected List<ParseObject> mRecipes;
protected ImageView imgPic;
RecipesAdapter adapter;


private static int LOAD_IMAGE_RESULTS = 1;
private String imagePath;
ListView listview;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_recipes_ideas);

    imagePath = PreferenceManager.getDefaultSharedPreferences(this).getString("picturePath", "");

    imgPic = (ParseImageView) findViewById(R.id.img_recipes);
    mRecipesChat = (EditText) findViewById(R.id.add_text);
    mSendPicBtn = (Button) findViewById(R.id.btn_pic);
    mSendPicBtn.setOnClickListener(this);


    listview = (ListView) findViewById(android.R.id.list);
    listview.setAdapter(adapter);




    mSendRecipesBtn = (Button) findViewById(R.id.btn_comment);
    mSendRecipesBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            ParseUser currentUser = ParseUser.getCurrentUser();

            String currentUserUsername = currentUser.getUsername();

            String commentStatus = mRecipesChat.getText().toString();

            if (commentStatus.isEmpty()) {

                AlertDialog.Builder builder = new AlertDialog.Builder(RecipesIdeas.this);
                builder.setMessage("Please type in a Message!");
                builder.setTitle("Oops!");
                builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        dialogInterface.dismiss();
                    }

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

            }

            byte[] image = null;
            final ParseFile file = new ParseFile("CommentPic.png", image);
            // Upload the image into Parse Cloud
            file.saveInBackground();

            ParseObject commentObject = new ParseObject("Comment");
            commentObject.put("commentStatus", commentStatus);
            commentObject.put("user", currentUserUsername);
            commentObject.put("Image", "CommentPic.png");
            commentObject.put("CommentImageFile", file);
            commentObject.saveInBackground(new SaveCallback() {
                @Override
                public void done(ParseException e) {

                    Toast.makeText(getBaseContext(), "Your Pic is Saved!", Toast.LENGTH_LONG).show();

                    if (e == null) {
                        Toast.makeText(RecipesIdeas.this, "Send!", Toast.LENGTH_LONG).show();
                        mRecipesChat.setText("");

                        queryAndPopulateMsgs();

                    } else {
                        Toast.makeText(RecipesIdeas.this, e.getMessage(), Toast.LENGTH_LONG).show();

                        AlertDialog.Builder builder = new AlertDialog.Builder(RecipesIdeas.this);
                        builder.setMessage(e.getMessage());
                        builder.setTitle("Sorry!");
                        builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                                dialogInterface.dismiss();
                            }

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



                    }

                }


            });

        }


    });


}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    // Here we need to check if the activity that was triggers was the Image Gallery.
    // If it is the requestCode will match the LOAD_IMAGE_RESULTS value.
    // If the resultCode is RESULT_OK and there is some data we know that an image was picked.
    if (requestCode == LOAD_IMAGE_RESULTS && resultCode == RESULT_OK && data != null) {
        // Let's read picked image data - its URI
        Uri pickedImage = data.getData();
        // Let's read picked image path using content resolver
        String[] filePath = {MediaStore.Images.Media.DATA};
        Cursor cursor = getContentResolver().query(pickedImage, filePath, null, null, null);
        cursor.moveToFirst();
        String imagePath = cursor.getString(cursor.getColumnIndex(filePath[0]));
        PreferenceManager.getDefaultSharedPreferences(this).edit().putString("picturePath", imagePath).commit();
        cursor.close();
        imgPic = (ParseImageView) findViewById(R.id.img_recipes);
        // Now we need to set the GUI ImageView data with data read from the picked file.
        imgPic.setImageBitmap(BitmapFactory.decodeFile(imagePath));


        // At the end remember to close the cursor or you will end with the RuntimeException!

    }


}

@Override
public void onClick(View v) {
    // Create the Intent for Image Gallery.
    Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

    // Start new activity with the LOAD_IMAGE_RESULTS to handle back the results when image is picked from the Image Gallery.
    startActivityForResult(i, LOAD_IMAGE_RESULTS);
}


private void refreshMsgs() {
    queryAndPopulateMsgs();
}

protected void queryAndPopulateMsgs() {

    ParseUser currentUser = ParseUser.getCurrentUser();
    if (currentUser != null) {

        ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("Comment");
        query.orderByDescending("createdAt");
        query.setLimit(300);
        query.findInBackground(new FindCallback<ParseObject>() {
            @Override
            public void done(List<ParseObject> comment, ParseException e) {
                if (e == null) {
                    mRecipes = comment;

                    RecipesAdapter adapter = new RecipesAdapter(getListView().getContext(), mRecipes, listview);
                    setListAdapter(adapter);

                } else {
                    Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();

                }

            }


        });


    }


}


@Override
protected void onResume() {
    super.onResume();

    queryAndPopulateMsgs();
}


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

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

}

Chero Beam
  • Forum-Beiträge: 37

19.09.2015, 18:01:58 via Website

Den Adapter kennst du ja schon... wenn du noch die xmls brauchst musst es ebend sagen...

Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.09.2015, 18:15:42 via Website

Ja die XML wären jetzt wirklich noch interessant, der Code sieht soweit i.o. aus, obwohl ich meine dass er Parser Upload nicht funktionieren dürfte.

LG Pascal //It's not a bug, it's a feature. :) ;)

Chero Beam
  • Forum-Beiträge: 37

19.09.2015, 18:21:56 via Website

Wenn ich den adapter einrichte für die listview dann muss ich ja auch sicherstellen das er eine reference zu den daten erhält um das item view zu befüllen, richtig? Aber er überschreibt das bild wie du das auch schon festgestellt hast.... also ist was in meinem adapter nict gut! Also er müsste ja eingerichtet sein um die daten der gallery zu managen und in die listview zu setzen! Kannst du dir nochmal den adapter von mir anschauen und gucken was ich da machen kann?
Weil ich glaube das der adapter keine reference zu den bilddateien hat und deswegen immer wieder das bild überschreibt so das die imageview wieder leer ist...

— geändert am 19.09.2015, 18:24:30

Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.09.2015, 18:26:58 via Website

Die Frage ist, warum willst du den Upload über die ListView machen?
So ganz habe ich das noch nicht verstanden.
Ich hätte das jetzt so ähnlich gemacht wiei ch schonmal geschrieben habe:
1. Bild aus der Galerie auswählen
2. in einem Popup anzeigen lassen und dann bestätein
3. Upload.

Wozu die listView?

Da fällt mir gerade auf:

Du machst im Code das hier:

listview.setAdapter(adapter);

Aber wo initialisierst du den Adaper?
Dei Varaible ist doch null weil nur definiert in keine Init durchgeführt.

LG Pascal //It's not a bug, it's a feature. :) ;)

Chero Beam
  • Forum-Beiträge: 37

19.09.2015, 18:36:23 via Website

Was muss ich da machen um den Adapter zu initialisieren? kannst du mir dabei helfen das hinzubekommen?

Chero Beam
  • Forum-Beiträge: 37

19.09.2015, 18:53:02 via Website

Ich hab jetzt das hier aber ich weiss nicht was ich zwischen den klammern setzen muss???

listview = (ListView) findViewById(android.R.id.list);
RecipesAdapter adapter = new RecipesAdapter(?????);
listview.setAdapter(adapter);

Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.09.2015, 18:55:28 via Website

Schau dir deinen Konstruktor an:

public RecipesAdapter(Context context, List<ParseObject> comment) {

als erster parameter der Context da reicht aus einer Activity der parameter "this" und als 2. musst du eine Liste von ParseObjekten übergeben.

— geändert am 19.09.2015, 18:55:39

LG Pascal //It's not a bug, it's a feature. :) ;)

Chero Beam
  • Forum-Beiträge: 37

19.09.2015, 19:10:40 via Website

Ah ich verstehe, ich muss den context und den comment in dem adapter wiedergeben in der Activity mit getlistview, getContext, mRecipes! aber ich hab im constructor nur den context und den comment aber nicht das image o. die imageview(item)? wie kann ich das im Adapter in den constructor reinbauen? Weil wenn ich den so belasse dann übergibt er keine daten der imageview, oder seh ich das falsch?

— geändert am 19.09.2015, 19:11:53

Chero Beam
  • Forum-Beiträge: 37

19.09.2015, 19:15:28 via Website

Also was ich genau damit meine ist das das bild aus der gallery ja auch aus daten besteht. jpeg oder png, richtig? und diese daten muss ich dem constructor übergeben aber wie? mit data?

Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.09.2015, 19:47:52 via Website

Ich glabue mit deinen ganzen Gedanken bist du auf dem Holzweg.
Du musst da garnix übergeben. Du brauchst dafür auch kene ListView oder kein Adapter. Lasse diese beiden kompnenten mal weg und füge eine Image View einen Bild auswahl button und einen Upload Button ein, programmiere die entsprechenden onClickMethoden und fertig ist dein Uploader. uum. musst du noch ein Feld für Text einfügen.
Aber ich glaube almählich dass du den adapter nicht selbt geschreiben hast, sonst wüsstest du was du tust.

Der ListView Adapter + List View ist für die Spätere Anzeige der Posts übersicht und nicht für den Upload des Bildes!

LG Pascal //It's not a bug, it's a feature. :) ;)

Chero Beam
  • Forum-Beiträge: 37

19.09.2015, 20:08:54 via Website

das weiss ich ja und den adapter hab ich auch selbst geschrieben nur ich tu mir schwer die logic zu verstehen wie der adapter mein bild wieder überschreibt! Ausserdem muss ich dem adapter ja die parse objecte übergeben damit er sie nutzen kann! An der stelle habe ich auh dem adapter den usernamen und den comment übergeben, das sind 2 textviews. Aber ich habe dem adapter nicht das parse object die imageview übergeben oder besser gesagt ich muss dem adapter dies hier übergebn...

holder.imgPic.setImageBitmap(BitmapFactory.decodeFile(recipesObject.get(imagePath(getContext()))));

was dick ist ist nicht richtig....

In meinem profil hab ich das genauso wie du das beschrieben hast ohne adapter und mit nen upload button und nen choose listener integriert und alles ohne probleme!!! Aber hier ist der Adapter und da ich auch eine listview habe möchte ich so eine art postwall haben wo der user die möglichkeit hat bilder mit o. ohne kommentare zu posten! Weisst du wie bei facebook aber dafür muss ich meinen adapter gut einrichten und ich tu mir halt ein wenig schwer mit dem image von der gallery und das in meinem adapter einzufügen! Hinterher werde ich eh noch ein popup fenster einrichten aber erst einmal muss das image von der gallery in der imageview bleiben und nicht wieder in 2 sek. verschwinden...

Und da brauch ich deine hilfe weil ich das nicht so richtig verstehe! Ich hoffe du verstehst wirklich was ich möchte und auch meine und nicht das wir aneinander vorbeireden....

— geändert am 19.09.2015, 20:15:26

Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.09.2015, 20:15:37 via Website

Er überscheibt das Bild weil die Logig schlichtweg falsch ist.
Sorry dass ich jetzt so direkt bin...

Du den Adapter mal komplett aus deiner logik rauslöschen und bau dir ein strik normales Upload fenster.
Wenn du z.b. her im Forum ein Bild hochladen willst, dann öffnet isch ein PopUp wo du dann das Bild auswählst und wann wirds hochgeladen.
Das ganze erweiterst du noch mit einer ImageView die das Bild zu Vorschau anzeigt.
Einen Upload Button ran und fertig.

Das was du jetzt hast ist der falsche Part.
Wen du mit deiner jetzigen Logik nen Biderupload basten willst (wie auch immer das zu schaffen ist), dann hast du eine Liste.
Da gibt es dann mehrere Szenarien:
1. Diese Liste hat nur einen eintrag, dann kannst du dir die ListView + Adapter spraren.
2. Die Liste hat mehrere einträge aber immer die gleichen: macht auch wenig sinn
3. Die List view hat mherere einträge mit mehreren Bilder die du alle gleichzeitig hochladen willst. -> würde gehen nur so wie bisher nicht

PS: Wir reden uum. nur aneinander vorbei, weil du biher nicht eingesehen hast, dass es so nicht funktionieren kann

— geändert am 19.09.2015, 20:16:30

LG Pascal //It's not a bug, it's a feature. :) ;)

Chero Beam
  • Forum-Beiträge: 37

19.09.2015, 21:25:06 via Website

Hey Pascal, du hast ja recht! Ich checks jetzt erst das sich das bild dublizieren würde! Ich werde das Layout nochmal neu aufbauen mit nen popup fenster wo der user dann sein image und seinen text einfügen kann! Hat ein wenig gedauert bei mir bis ichs begriffen habe.
Danke für deine Geduld und für deine Hilfe!!! Sollte ich wieder probleme haben meld ich mich zurück!
Wünsche dir einen schönen Abend! Danke nochmal...
Ps: manchmal dauerts bei uns frauen doch länger bis der groschen fällt! 😂😉👍✌

Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.09.2015, 21:32:22 via Website

Ist kein Problem, aber ich hätte da einen Tipp, der bei mir hilft:
Wenn man nicht weiter weiss, dann einfach mal für ein paar Stunden aufhören und etwas anderes macht.
Wenn man sich danach sein Projekt wieder anschaut hat man meist mehr glück ;)

— geändert am 19.09.2015, 21:32:31

LG Pascal //It's not a bug, it's a feature. :) ;)

Chero Beam
  • Forum-Beiträge: 37

19.09.2015, 22:06:18 via Website

Aber voll! Danke nochmal 🙈🙉🙊😉

Georg C.
  • Forum-Beiträge: 235

19.09.2015, 23:38:18 via Website

und wenn man die RELATION des Codes Aufbau (Code selbst) zu den Fragen analisiert, bekommt man AUCH die Antwort. Wer so ein Code SELBER Schreiben kann, ist auch selber in der Lage, die kleine Nuancen zu debugen.
Einem ... Mädel wird aber eher geholfen ... seine ... Aufgaben (vom Fremden) zu erledigen ...

Ich helfe gerne (egal ob es Man oder Frau ... oder ... ist), ... was mich aber nervt ... und ... ist vieles; in besondern das austricksten ...
image

Ich persönlich werde solchen "Madels" wie Chero Beam NICHT Helfen.
Sollte ich "Falsch liegen" ... - sorry.

Gruß
Georg

Sorry für Gramatik & Stilistik Fehler.

Chero Beam
  • Forum-Beiträge: 37

06.10.2015, 16:39:53 via Website

Hallo,

bin heute wieder nach einiger Zeit im Forum und muss das hier sehen!
Erst einmal trickse ich hier niemanden aus und wenn DU schon spionierst dann tu es wenigstens ordentlich und stell keine falschen Behauptungen hier auf! Zum zweiten hast DU mir auch überhaupt nicht geholfen, also behaupte auch nicht so einen Unfug!
Und wenn ich den Account meines Freundes benutze was ist dann schon dabei? Das heißt noch lange nicht das ich hier jemanden aussnutze oder sowas und außerdem ist das meine Sache!

Ausserdem nur zu Deiner Information: Es wird hier Männern wie Frauen gleich geholfen!!!

So und ich möchte das DU diesen Mist wieder löscht, weil das ist das letzte!!!

Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

06.10.2015, 19:41:24 via Website

Hallo zusammen,
bitte beruhigt euch wieder.
Wir wollen hier niemanden benachteiligen, das Geschlecht spielt doch überhaupt keine Rolle.
Wichtig und Ziel eines Forums eine Antwort auf seine Frage zu bekommen und genau das ist hier geschehen.

@Chero Beam: Jeder Nutzer hat hier normalerweise seinen eigenen Accout. Weitere Infos entnimm bitte deinem Email Postfach ;).

Ich denke damit ist das erledigt und da das Thema eh schon beantwortet ist, mache ich hier mal zu.

LG

LG Pascal //It's not a bug, it's a feature. :) ;)

Andy N.