[gelöst] wie greife ich auf ein Element bei mCommentList zu?

  • Antworten:4
  • Bentwortet
Peter Staudigel
  • Forum-Beiträge: 20

03.05.2015, 14:35:06 via Website

Bin ieder al Ratlos, ich kann ja über "mCommentList.get(position)"
auf den Teil von mmCommentList zugreifen.

Nur dieser beinhaltet spenden und username...
wie bekomme ich jetzt nur den usernamen?

hoffe ihr könnt mir Helfen ich komme leider nicht weiter...

public void updateJSONdata() {

    // Instantiate the arraylist to contain all the JSON data.
    // we are going to use a bunch of key-value pairs, referring
    // to the json element name, and the content, for example,
    // message it the tag, and "I'm awesome" as the content..

    mCommentList = new ArrayList<HashMap<String, String>>();

    // Bro, it's time to power up the J parser
    JSONParser jParser = new JSONParser();
    // Feed the beast our comments url, and it spits us
    // back a JSON object. Boo-yeah Jerome.
    JSONObject json = jParser.getJSONFromUrl(READ_SPENDEN_URL);

    // when parsing JSON stuff, we should probably
    // try to catch any exceptions:
    try {

        // I know I said we would check if "Posts were Avail." (success==1)
        // before we tried to read the individual posts, but I lied...
        // mComments will tell us how many "posts" or comments are
        // available
        mComments = json.getJSONArray(TAG_POSTS);

        // looping through all posts according to the json object returned
        for (int i = 0; i <= mComments.length(); i++) {
            String username;
            String spenden;
            if (i==0){
                username = "Spieler";
                spenden = "Spendensoll";
            }
            else {
                JSONObject c = mComments.getJSONObject(i - 1);

                // gets the content of each tag
                username = c.getString(TAG_USERNAME);
                spenden = c.getString(TAG_SPENDEN);
            }
            // creating new HashMap
            HashMap<String, String> map = new HashMap<String, String>();

            map.put(TAG_USERNAME, username);
            map.put(TAG_SPENDEN, spenden);

            // adding HashList to ArrayList
            mCommentList.add(map);

            // annndddd, our JSON data is up to date same with our array
            // list
        }

    } catch (JSONException e) {
        e.printStackTrace();
    }
}

/**
 * Inserts the parsed data into the listview.
 */
private void updateList() {

    final ListAdapter adapter = new SimpleAdapter(this, mCommentList,
            R.layout.single_spenden, new String[] { TAG_USERNAME,
            TAG_SPENDEN }, new int[] {R.id.username,
            R.id.spenden });
    // I shouldn't have to comment on this one:
    setListAdapter(adapter);

    // Optional: when the user clicks a list item we
    //could do something.  However, we will choose
    //to do nothing...
    ListView lv = getListView();
    lv.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                                int position, long id) {
            switch(parent.getPositionForView(view)){

                case 0:{
                    Log.e("User1", mCommentList.get(position).toString());
                    break;
                }
                case 1:{
                    Log.e("User2", mCommentList.get(position).toString());
                    break;
                }
                case 2:{
                    Log.e("User3", mCommentList.get(position).toString());
                    break;
                }
                case 3:{
                    Log.e("User4", mCommentList.get(position).toString());
                    break;
                }

            }
            // This method is triggered if an item is click within our
            // list. For our example we won't be using this, but
            // it is useful to know in real life applications.

        }
    });
}

— geändert am 03.05.2015, 22:07:53

Antworten
Sven R.
  • Forum-Beiträge: 1.904

03.05.2015, 15:15:26 via App

Vorweg: Verstehst du jede Zeile Code, die du geschrieben hast(oder copy&pastet hast)?

Du speicherst (wie du hoffentlich weißt) die Daten in einer HashMap; finde ich ungewöhnlich. Mach das lieber anders: Ein Comment Objekt, dass Getter und Setter(get...() und set...()) für den Namen und den Spendenbetrag hat.
Du könntest es aber auch so lassen und map.get(key) machen. Ist aber wirklich nicht empfehlenswert!!!

Dann würde ich noch im Listener der ListView die Position direkt aus den Argumenten nehmen und nicht durch Umwege holen. Darum ist dein Switch und Case unnötig.

Edit: Ach, ich sehe gerade, wie du das mit dem Adapter gemacht hast. Für die Anfänge ist das okay, wird später aber vielleicht unübersichtlicher. Ich würde immer, wenn man ein neues Projekt anfängt, das RecyclerView statt der ListView nehmen (oder jetzt auf die Schnelle einen eigenen Adapter).

— geändert am 03.05.2015, 15:22:24

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
Peter Staudigel
  • Forum-Beiträge: 20

03.05.2015, 20:56:16 via Website

ne leider nicht, fange erst mit der ganzen Sache an...

das mit dem case, ist klar. War nur von meinen Versuchen noch da^^^

Und ich muss ehrlich sagen, das mit dem get und set ist bestimmt besser, nur muss ich die sache zu ende bringen und würde gerne vorerst map.get(key) benutzen. Auser es gibt irgendetwas ganz schlimmes warum ich es lassen sollte?

ansonsten verstehe bzw. finde ich noch nicht wo ich das genau hin schreiben muss...

— geändert am 03.05.2015, 21:04:33

Antworten
Peter Staudigel
  • Forum-Beiträge: 20

03.05.2015, 22:07:24 via Website

hab mich nochmal belesen und habe es hin bekommen :)

wie gesagt für mein 1. App und 1. mal java sollte es ausreichend sein ^^

ich danke dir mal wieder, du warst die Rettung!

bis zumm nächsten mal, und ich hoffe das ich auch mal so viel Ahnung von der ganzen Sache haben werde :D

Antworten
Sven R.
  • Forum-Beiträge: 1.904

04.05.2015, 07:35:37 via App

Bitte 😀

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten