1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

ListView will nicht so recht...

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Samsung I7500, 31.08.2009.

  1. Samsung I7500, 31.08.2009 #1
    Samsung I7500

    Samsung I7500 Threadstarter Fortgeschrittenes Mitglied

    Beiträge:
    359
    Erhaltene Danke:
    4
    Registriert seit:
    20.06.2009
    Moinsen
    PHP:
        public ListView createListView(String[] items) {
            ListView l = new ListView(getContext());
            ArrayAdapter<String> Adapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_list_item_1, items);
            l.setAdapter(Adapter);
            l.setFocusableInTouchMode(true);
            l.setOnItemClickListener(
                    new AdapterView.OnItemClickListener() {
                        

                        @Override
                        public void onItemClick(AdapterView<?> adapterView, View view, int arg2, long arg3) {
                            adapterView.getSelectedItemPosition(); // Ist immer -1
                            adapterView.isSelected();              // Ist False
                        }
                      });

            return l;
        }
    Ok, das ist ein Stück Quellcode aus meinem Programm. Diese Funktion generiert mir eine ListView. Diese wird auch ohne weitere Probleme dargestellt, onClickItem wird auch ausgelöst. Problem jedoch ist hier das AdapterView. getSelectedItemPosition ist immer -1, isSelected ist immer false, etc.

    Irgendwie will das nicht so recht. Weis jemand Rat?

    Merci :)
     
  2. Shinigami, 31.08.2009 #2
    Shinigami

    Shinigami Fortgeschrittenes Mitglied

    Beiträge:
    436
    Erhaltene Danke:
    69
    Registriert seit:
    08.04.2009
    Hi.

    Was willste denn überhaupt machen/erreichen?

    Gruß,
    Shini
     
  3. Samsung I7500, 31.08.2009 #3
    Samsung I7500

    Samsung I7500 Threadstarter Fortgeschrittenes Mitglied

    Beiträge:
    359
    Erhaltene Danke:
    4
    Registriert seit:
    20.06.2009
    Eine Sprachauswahl realisieren. Habe mittlerweile festgestellt, dass Android wohl zwischen Click und Touch unterscheidet. Aber k.a. wie ich mittels onTouchListener an die gedrückte Position komm mmmhhh...
     
  4. Shinigami, 31.08.2009 #4
    Shinigami

    Shinigami Fortgeschrittenes Mitglied

    Beiträge:
    436
    Erhaltene Danke:
    69
    Registriert seit:
    08.04.2009
    Die Referenz *hier* haste bestimmt schon gelesen oder?

    Inbesondere den Kommentar: Implementers can call getItemAtPosition(position) if they need to access the data associated with the selected item.

    Gruß,
    Shini
     
  5. Samsung I7500, 31.08.2009 #5
    Samsung I7500

    Samsung I7500 Threadstarter Fortgeschrittenes Mitglied

    Beiträge:
    359
    Erhaltene Danke:
    4
    Registriert seit:
    20.06.2009
    Ja da hab ich mich schon durchgewühlt, auch codebeispiele bei Google gesucht und so. Mit dem Click (pfeiltasten im Emulator) funktioniert es ja. Nur halt nicht mit dem Touch (Mausklick).
     
  6. Shinigami, 31.08.2009 #6
    Shinigami

    Shinigami Fortgeschrittenes Mitglied

    Beiträge:
    436
    Erhaltene Danke:
    69
    Registriert seit:
    08.04.2009
    Verwendest Du das Ergebnis in einer Activity, die von ListActivity erbt?

    Dann gäbe es da noch die Methode onListItemClick zum Überschreiben...
     
  7. Samsung I7500, 31.08.2009 #7
    Samsung I7500

    Samsung I7500 Threadstarter Fortgeschrittenes Mitglied

    Beiträge:
    359
    Erhaltene Danke:
    4
    Registriert seit:
    20.06.2009
    Nope, erbt von normaler Activity. Habe mich vom aufbau her an dem hier orientiert. Wüsste so auch nicht wie ich da jetzt ListActivitiy unterbringen sollte, bin erst frisch mit Android am gange...
     
  8. Shinigami, 31.08.2009 #8
    Shinigami

    Shinigami Fortgeschrittenes Mitglied

    Beiträge:
    436
    Erhaltene Danke:
    69
    Registriert seit:
    08.04.2009
    Wie wär's wenn Du die Sprachauswahl mit nem sog. Spinner (entspricht der üblichen Drop-Down-List) realisierst? Dann brauchst Du Deinen View/Activity nicht wirklich verlassen. Mehr dazu in den ApiDemos (unter Views -> Spinner), welche wirklich fast immer weiterhelfen ;)

    Ansonsten würde ich eher das Standard-Verhalten empfehlen, was ich bisher eigentlich in allen Beispielen gesehen habe. Anstatt eine Activity, die bedarfsweise die richtigen Inhalte lädt - wie in dem von Dir genannten Thread, mehrere Activities bauen. Ist an vielen Stellen einfacher zu implementieren.

    Gruß,
    Shini
     
  9. Chri, 01.09.2009 #9
    Chri

    Chri Gewerbliches Mitglied

    Beiträge:
    138
    Erhaltene Danke:
    0
    Registriert seit:
    27.08.2009
    Phone:
    Nexus 4
    Ich hab eine Liste, bei der das anklicken primer Funktioniert!
    vielleicht hilft sie dir ja weiter!

    [JAVA]

    import android.app.ListActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    import android.widget.TextView;

    public class Tickets extends ListActivity {
    /** Called when the activity is first created. */

    private TextView info;


    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.setContentView(R.layout.tickets);


    this.setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1, COUNTRIES));
    getListView().setTextFilterEnabled(false);

    info = (TextView) findViewById(R.id.meinInfo);
    }

    public void onListItemClick(ListView l, View v, int position, long id)
    {
    info.setText(COUNTRIES[position]);

    }
    static final String[] COUNTRIES = new String[] {
    "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra",
    "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina",
    "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan",
    "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium",
    "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia",
    "Bosnia and Herzegovina", "Botswana", "Bouvet Island", "Brazil", "British Indian Ocean Territory",
    "British Virgin Islands", "Brunei", "Bulgaria", "Burkina Faso", "Burundi",
    "Cote d'Ivoire", "Cambodia", "Cameroon", "Canada", "Cape Verde",
    "Cayman Islands", "Central African Republic", "Chad", "Chile", "China",
    "Christmas Island", "Cocos (Keeling) Islands", "Colombia", "Comoros", "Congo",
    "Cook Islands", "Costa Rica", "Croatia", "Cuba", "Cyprus", "Czech Republic",
    "Democratic Republic of the Congo", "Denmark", "Djibouti", "Dominica", "Dominican Republic",
    "East Timor", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea",
    "Estonia", "Ethiopia", "Faeroe Islands", "Falkland Islands", "Fiji", "Finland",
    "Former Yugoslav Republic of Macedonia", "France", "French Guiana", "French Polynesia",
    "French Southern Territories", "Gabon", "Georgia", "Germany", "Ghana", "Gibraltar",
    "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guinea", "Guinea-Bissau",
    "Guyana", "Haiti", "Heard Island and McDonald Islands", "Honduras", "Hong Kong", "Hungary",
    "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Israel", "Italy", "Jamaica",
    "Japan", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Kuwait", "Kyrgyzstan", "Laos",
    "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg",
    "Macau", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Marshall Islands",
    "Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia", "Moldova",
    "Monaco", "Mongolia", "Montserrat", "Morocco", "Mozambique", "Myanmar", "Namibia",
    "Nauru", "Nepal", "Netherlands", "Netherlands Antilles", "New Caledonia", "New Zealand",
    "Nicaragua", "Niger", "Nigeria", "Niue", "Norfolk Island", "North Korea", "Northern Marianas",
    "Norway", "Oman", "Pakistan", "Palau", "Panama", "Papua New Guinea", "Paraguay", "Peru",
    "Philippines", "Pitcairn Islands", "Poland", "Portugal", "Puerto Rico", "Qatar",
    "Reunion", "Romania", "Russia", "Rwanda", "Sqo Tome and Principe", "Saint Helena",
    "Saint Kitts and Nevis", "Saint Lucia", "Saint Pierre and Miquelon",
    "Saint Vincent and the Grenadines", "Samoa", "San Marino", "Saudi Arabia", "Senegal",
    "Seychelles", "Sierra Leone", "Singapore", "Slovakia", "Slovenia", "Solomon Islands",
    "Somalia", "South Africa", "South Georgia and the South Sandwich Islands", "South Korea",
    "Spain", "Sri Lanka", "Sudan", "Suriname", "Svalbard and Jan Mayen", "Swaziland", "Sweden",
    "Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "The Bahamas",
    "The Gambia", "Togo", "Tokelau", "Tonga", "Trinidad and Tobago", "Tunisia", "Turkey",
    "Turkmenistan", "Turks and Caicos Islands", "Tuvalu", "Virgin Islands", "Uganda",
    "Ukraine", "United Arab Emirates", "United Kingdom",
    "United States", "United States Minor Outlying Islands", "Uruguay", "Uzbekistan",
    "Vanuatu", "Vatican City", "Venezuela", "Vietnam", "Wallis and Futuna", "Western Sahara",
    "Yemen", "Yugoslavia", "Zambia", "Zimbabwe"
    };

    }
    [/JAVA]

    und noch die xml Datei:
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <ListView
    android:id="@+id/android:list"
    android:layout_width="fill_parent"
    android:layout_height="320px"
    />
    <TextView
    android:id="@+id/meinInfo"
    android:layout_width="fill_parent"
    android:layout_height="50px"
    android:background="#FFFFFF"
    android:textSize="16px"
    android:textColor="#000000"
    android:text="Start" />
    </LinearLayout>

    musst nur noch in deinem Paket einfügen und fertig;)

    mfg Chri
     
  10. Samsung I7500, 01.09.2009 #10
    Samsung I7500

    Samsung I7500 Threadstarter Fortgeschrittenes Mitglied

    Beiträge:
    359
    Erhaltene Danke:
    4
    Registriert seit:
    20.06.2009
    Mittlerweile hab ich nu herausgefunden dass der dritte Parameter die angeklickte Position ist. K.a. wozu die andere Funktion gut sein soll. Jedenfalls funzt nu alles. Dumm wenn man Codeschnipsel hat bei denen Parameter dumm benannt sind naja... :)
     

Diese Seite empfehlen