ListView

  • Antworten:2
seaside
  • Forum-Beiträge: 5

23.05.2013, 20:42:01 via Website

Hallo zusammen,

ich bin absoluter Neuling in der Android Programmierung und sitze gerade an einer eigentlich recht simplen App. Die App soll über eine Liste, ein EditText-Feld und einen Suchen-Button verfügen.
Ein einzelnes Listenelement soll aus zwei Strings (zwei TextViews) bestehen.

Das EditText-Feld und der Button werden angezeigt die Liste jedoch nicht.
Ich weiß leider nicht woran es liegt. Vielleicht findet von euch ja jemand den Fehler :)

Hier der Code:

activity_main.xml
1<RelativeLayout
2 android:layout_width="match_parent"
3 android:layout_height="match_parent"
4 tools:context=".MainActivity" >
5
6 <EditText
7 android:id="@+id/editText"
8 android:layout_width="wrap_content"
9 android:layout_height="wrap_content"
10 android:layout_alignParentLeft="true"
11 android:layout_alignParentTop="true"
12 android:text="@string/suchen" />
13
14 <Button
15 android:id="@+id/button1"
16 android:layout_width="wrap_content"
17 android:layout_height="wrap_content"
18 android:layout_alignParentRight="true"
19 android:layout_alignParentTop="true"
20 android:text="@string/suchen" />
21
22 <ListView
23 android:id="@+id/listView"
24 android:layout_width="wrap_content"
25 android:layout_height="wrap_content"
26 android:layout_below="@id/editText"/>
27
28</RelativeLayout>

itemlayout.xml
1<?xml version="1.0" encoding="utf-8"?>
2<RelativeLayout
3 android:layout_width="match_parent"
4 android:layout_height="match_parent"
5 android:orientation="vertical" >
6
7 <TextView
8 android:id="@+id/Name"
9 android:layout_width="wrap_content"
10 android:layout_height="wrap_content" />
11
12 <TextView
13 android:id="@+id/Grad"
14 android:layout_width="wrap_content"
15 android:layout_height="wrap_content"
16 android:layout_toRightOf="@id/Name" />
17
18</RelativeLayout>

item.java
1public class Item {
2
3 public String name, grad;
4
5 public Item(String _name, String _grad){
6 this.name = _name;
7 this.grad = _grad;
8 }
9
10}

MainActivity.java

1import java.util.ArrayList;
2import android.os.Bundle;
3import android.app.Activity;
4import android.view.LayoutInflater;
5import android.view.Menu;
6import android.view.View;
7import android.view.ViewGroup;
8import android.widget.BaseAdapter;
9import android.widget.LinearLayout;
10import android.widget.ListView;
11import android.widget.RelativeLayout;
12import android.widget.TextView;
13
14public class MainActivity extends Activity {
15
16 public ArrayList<Item> datensaetze;
17 Adapter myAdapter;
18
19 @Override
20 protected void onCreate(Bundle savedInstanceState) {
21 super.onCreate(savedInstanceState);
22 setContentView(R.layout.activity_main);
23 init();
24
25 ListView listView = (ListView) findViewById(R.id.listView);
26 myAdapter = new Adapter();
27 listView.setAdapter(myAdapter);
28
29
30 }
31
32 @Override
33 public boolean onCreateOptionsMenu(Menu menu) {
34 // Inflate the menu; this adds items to the action bar if it is present.
35 getMenuInflater().inflate(R.menu.activity_main, menu);
36 return true;
37 }
38
39 public void init(){
40 datensaetze = new ArrayList<Item>();
41 datensaetze.add(new Item("Aal", "Keine"));
42 datensaetze.add(new Item("Agar-Agar", "Sehr stark"));
43 datensaetze.add(new Item("Amaranth", "Keine"));
44 }
45
46 public class Adapter extends BaseAdapter {
47
48 LayoutInflater mInflater;
49
50
51 @Override
52 public int getCount() {
53 return datensaetze.size();
54 }
55
56 @Override
57 public Object getItem(int position) {
58 return datensaetze.get(position);
59 }
60
61 @Override
62 public long getItemId(int position) {
63 return position;
64 }
65
66 @Override
67 public View getView(int position, View convertView, ViewGroup parent) {
68
69 if(convertView == null){
70 convertView = mInflater.inflate(R.layout.itemlayout, parent, false);
71
72 }
73 TextView nameTextView = (TextView) convertView.findViewById(R.id.Name);
74 TextView gradTextView = (TextView) convertView.findViewById(R.id.Grad);
75
76 Item item = (Item) getItem(position);
77 nameTextView.setText(item.name);
78 gradTextView.setText(item.grad);
79
80 return convertView;
81 }
82
83 }
84}

Vielen Dank schon mal -_-

Antworten
Christian
  • Forum-Beiträge: 307

24.05.2013, 12:37:53 via Website

Hi seaside,

mmhh könnte am Adapter liegen warum keine Daten angezeigt werden. Ich hab mit dem BaseAdapter noch nicht soviel gearbeitet kann dir da also nur bedingt helfen.
Für ListView nutzte ich wenn möglich den ArrayAdapter.

Bei StackOverflow gib es noch ein Beispiel wie du das ganze mit deiner eigener Klasse machen kannst.
Link: http://stackoverflow.com/questions/2265661/how-to-use-arrayadaptermyclass

mfg Christian

— geändert am 24.05.2013, 12:38:28

Antworten
seaside
  • Forum-Beiträge: 5

24.05.2013, 13:06:49 via Website

Hmm...wo genau liegt denn der Unterschied zwischen den zwei Adaptern?
Danke für den Link, werde es mir mal anschauen...

Antworten