T
Tom299
Stammgast
- 122
Hallo,
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:
mein ArrayAdapter:
xml-header:
und xml-item:
Wie man sieht, habe ich auch im header-bereich ein paar item-click-tests eingebaut, und die funktionieren, sowohl für eine TextView, als auch für die ganze TableRow. Aber der Listener für die Listview will einfach nicht, und wie will ich ohne diesen an die selektierte Zeile rankommen?
Grüße,
Tom
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