| |||||||
Das Thema "Listview OnItemClickListener - nichts passiert" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.
|
| | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Fortgeschrittenes Mitglied Modell: HTC Sensation Registriert seit: 31.08.2011
Beiträge: 390
Abgegebene Danke: 25
Erhielt 59 Danke für 57 Beiträge
| ich habe das Problem, daß mein OnItemClickListener nicht funktioniert, und ich finde einfach nicht den Fehler. Vielleicht kann mir jemand von euch weiterhelfen. Hier mein (aktueller) Code: Code: import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
import android.widget.Toast;
public class TableView extends Activity {
private ArrayList<DBItem> dbItems;
//private ArrayAdapter<DBItems> itemsAdapter;
private DBItemArrayAdapter itemsAdapter;
private DBItem selectedDBItem;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout layout = new LinearLayout(this);
layout.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
layout.setOrientation(LinearLayout.VERTICAL);
setContentView(layout);
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//LinearLayout layoutHeader = (LinearLayout)inflater.inflate(R.layout.table_header, null);
TableLayout layoutHeader = (TableLayout)inflater.inflate(R.layout.table_header_new, null);
TextView tvHeaderDatum = (TextView)layoutHeader.findViewById(R.id.tv_head_datum);
if (tvHeaderDatum != null) {
tvHeaderDatum.setText("DateX");
tvHeaderDatum.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
selectedDBItem = dbItems.get(0);
Toast itemToast = Toast.makeText(getApplicationContext(), selectedDBItem.getName() + " " + selectedDBItem.getVorname(), Toast.LENGTH_SHORT);
itemToast.show();
}
});
}
TableRow row = (TableRow)layoutHeader.findViewById(R.id.header_row);
if (row != null) {
row.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
selectedDBItem = dbItems.get(0);
Toast itemToast = Toast.makeText(getApplicationContext(), selectedDBItem.getName() + " " + selectedDBItem.getVorname(), Toast.LENGTH_SHORT);
itemToast.show();
}
});
}
//LinearLayout layoutItem = (LinearLayout)inflater.inflate(R.layout.table_item, null);
//RelativeLayout layoutItem = (RelativeLayout)inflater.inflate(R.layout.table_item, null);
//TableLayout layoutItem = (TableLayout)inflater.inflate(R.layout.table_item_new, null);
layout.addView(layoutHeader);
//layout.addView(layoutItem);
ListView listView = new ListView(this);
listView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
dbItems = new ArrayList<DBItem>();
dbItems.add(new DBItem("1", "Schmidt", "Josef", "29.09.1972", true));
dbItems.add(new DBItem("20", "Müller", "Andreas", "19.07.1974", false));
dbItems.add(new DBItem("300", "Meier", "Peter", "09.05.1976", true));
dbItems.add(new DBItem("4000", "Huber", "Paul", "21.03.1969", false));
dbItems.add(new DBItem("50000", "Keller", "Markus", "11.12.1988", true));
//itemsAdapter = new ArrayAdapter<DBItems>(this, R.layout.table_item, R.id.tv_item_id, dbItems);
//itemsAdapter = new DBItemArrayAdapter(this, R.layout.table_item_new, dbItems);
itemsAdapter = new DBItemArrayAdapter(this, R.layout.table_item, dbItems);
listView.setAdapter(itemsAdapter);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView av, View v, int index, long arg3) {
System.out.println("ItemClicked");
selectedDBItem = dbItems.get(index);
if (selectedDBItem != null) {
Toast itemToast = Toast.makeText(getApplicationContext(), selectedDBItem.getName() + " " + selectedDBItem.getVorname(), Toast.LENGTH_SHORT);
itemToast.show();
}
}
});
layout.addView(listView);
}
} Code: import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.TableLayout;
import android.widget.TextView;
public class DBItemArrayAdapter extends ArrayAdapter<DBItem> {
int resource;
public DBItemArrayAdapter(Context context, int resourceId, List<DBItem> dbItems) {
super(context, resourceId, dbItems);
this.resource = resourceId;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//LinearLayout dbItemsView;
TableLayout dbItemsView;
DBItem item = getItem(position);
if (convertView == null) {
//dbItemsView = new LinearLayout(getContext());
dbItemsView = new TableLayout(getContext());
LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(resource, dbItemsView, true);
}
else {
//dbItemsView = (LinearLayout)convertView;
dbItemsView = (TableLayout)convertView;
}
TextView id = (TextView)dbItemsView.findViewById(R.id.tv_item_id);
TextView name = (TextView)dbItemsView.findViewById(R.id.tv_item_name);
TextView vorname = (TextView)dbItemsView.findViewById(R.id.tv_item_vorname);
TextView datum = (TextView)dbItemsView.findViewById(R.id.tv_item_datum);
CheckBox flag = (CheckBox)dbItemsView.findViewById(R.id.chk_item_flag);
id.setText(item.getId());
name.setText(item.getName());
vorname.setText(item.getVorname());
datum.setText(item.getDatum());
flag.setChecked(item.isFlag());
return dbItemsView;
}
} Code: <?xml version="1.0" encoding="utf-8"?>
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TableRow
android:id="@+id/header_row"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="0dp"
android:layout_weight="1.5"
android:layout_height="wrap_content"
android:id="@+id/tv_head_id"
android:layout_marginLeft="3dp"
android:text="@string/table_head_id">
</TextView>
<TextView
android:id="@+id/tv_head_name"
android:layout_width="0dp"
android:layout_weight="2"
android:layout_height="wrap_content"
android:layout_marginLeft="3dp"
android:text="@string/table_head_name">
</TextView>
<TextView
android:id="@+id/tv_head_vorname"
android:layout_width="0dp"
android:layout_weight="2"
android:layout_height="wrap_content"
android:layout_marginLeft="3dp"
android:text="@string/table_head_vorname">
</TextView>
<TextView
android:id="@+id/tv_head_datum"
android:layout_width="0dp"
android:layout_weight="2"
android:layout_height="wrap_content"
android:layout_marginLeft="3dp"
android:text="@string/table_head_datum">
</TextView>
<TextView
android:id="@+id/tv_head_flag"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_marginLeft="3dp"
android:text="@string/table_head_flag">
</TextView>
</TableRow>
</TableLayout> Code: <?xml version="1.0" encoding="utf-8"?>
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TableRow
android:id="@+id/item_row"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:text="id"
android:id="@+id/tv_item_id"
android:layout_width="0dp"
android:layout_weight="1.5"
android:layout_height="wrap_content"
android:paddingLeft="3dp">
</TextView>
<TextView
android:text="name"
android:id="@+id/tv_item_name"
android:layout_width="0dp"
android:layout_weight="2"
android:layout_height="wrap_content"
android:paddingLeft="3dp">
</TextView>
<TextView
android:text="vorname"
android:id="@+id/tv_item_vorname"
android:layout_width="0dp"
android:layout_weight="2"
android:layout_height="wrap_content"
android:paddingLeft="3dp">
</TextView>
<TextView
android:text="datum"
android:id="@+id/tv_item_datum"
android:layout_width="0dp"
android:layout_weight="2"
android:layout_height="wrap_content"
android:paddingLeft="3dp">
</TextView>
<CheckBox
android:id="@+id/chk_item_flag"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:paddingLeft="3dp">
</CheckBox>
</TableRow>
</TableLayout> Grüße, Tom |
| | |
| | #2 (permalink) |
| Fortgeschrittenes Mitglied Modell: HTC Sensation Registriert seit: 31.08.2011
Beiträge: 390
Abgegebene Danke: 25
Erhielt 59 Danke für 57 Beiträge
|
Also wenn ich den Standard-Array-Adapter benutze und dann als Resource android.R.layout.simple_list_item_1 verwende, dann kommt der Klick an. Kann mir jemand sagen, ob ich das Klickereignis evtl. in meiner XML-Layout-Datei noch zulassen muß? Oder woran könnte es sonst noch liegen? |
| | |
| | #3 (permalink) |
| Erfahrener Benutzer Modell: G1 DevPhone / SGS2 / SGT10.1v Registriert seit: 20.01.2009
Beiträge: 238
Abgegebene Danke: 7
Erhielt 50 Danke für 47 Beiträge
|
Ja kann ich ![]() Die Checkbox, die du in den Rows verwendest "schluckt" den OnClick. Als Lösung kannst du einen OnTouchListener auf den View der Rows setzen (also in deinen Adapter in die getView(...)-Methode auf den View den du zurückgibst). |
| | |
| Folgender Benutzer bedankt sich bei sixi für diesen Beitrag: | Tom299 (01.09.2011) |
| | #4 (permalink) |
| Fortgeschrittenes Mitglied Modell: HTC Sensation Registriert seit: 31.08.2011
Beiträge: 390
Abgegebene Danke: 25
Erhielt 59 Danke für 57 Beiträge
|
Vielen dank, auf die Idee wär ich nie gekommen, daß die CheckBox der Übeltäter ist ;-) Dabei hab ich sie nur mal zum Spaß eingebaut. Aber evtl. will ich später wirklich mal ne Checkbox in der Liste haben, und dann ist das doch gut zu wissen :-) Danke nochmals! LG Tom |
| | |
![]() |
|
| Themen-Optionen | |
| Ansicht | |
| |
| ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Checking [PB99DIAG.ZIP]... --> Nichts passiert!! | iltisanni | Root / Hacking / Modding für HTC Desire | 5 | 27.05.2011 14:55 |
| GridView + OnItemClickListener | mofl | Android App Entwicklung | 0 | 23.05.2011 10:08 |
| Hilfe: nichts passiert nachdem HTC Bildschirm | oggordon | HTC HD2 Forum | 2 | 15.02.2011 16:09 |
| Galaxy5 geht nicht ins Internet/es macht passiert nichts | psycho63 | Samsung Galaxy 5 (I5500) Forum | 17 | 05.01.2011 19:15 |
| [Home]+[Power] drücken, aber nichts passiert!!! [Gelöst] | thompson187 | Root / Hacking / Modding für HTC Magic | 2 | 19.11.2009 07:10 |