ListView will nicht so recht...

S

Samsung I7500

Erfahrenes Mitglied
5
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 :)
 
Hi.

Was willste denn überhaupt machen/erreichen?

Gruß,
Shini
 
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...
 
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
 
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).
 
Verwendest Du das Ergebnis in einer Activity, die von ListActivity erbt?

Dann gäbe es da noch die Methode onListItemClick zum Überschreiben...
 
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...
 
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
 
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
 
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... :)
 

Ähnliche Themen

A
Antworten
10
Aufrufe
1.021
swa00
swa00
D
Antworten
9
Aufrufe
1.767
jogimuc
J
J
  • JoEntwickler
Antworten
0
Aufrufe
974
JoEntwickler
J
Zurück
Oben Unten