Hallo, bin neu hier, und hoffe es ist ok, wenn ich einen etwas älteren Beitrag aus der Versenkung hole.
Ich habe eine ähnliche Problemstellung wie kruemelnerd und wollte seinen Vorschlag umsetzen. Jedoch bringt mir Eclipse dabei einen Fehler.
Der Fehler taucht auch auf, wenn ich es so wie in den beiden Tutorials beschrieben umsetze. In meinem Fall ist es ein RSS-Feed den ich parse und in eine ListView ausgeben möchte.
Mein Code (aufs Wesentliche gekürzt):
1public class RSSMain extends Activity {
2 private ListView liste;
3 private static Content myContent;
4
5 @Override
6 public void onCreate(Bundle savedInstanceState) {
7 super.onCreate(savedInstanceState);
8 setContentView(R.layout.activity_rssmain);
9
10 liste =(ListView)findViewById(R.id.feedListe);
11 myContent = new Content();
12 new ReadRssFeedTask(this).execute();
13 }
14
15 private class ReadRssFeedTask extends AsyncTask<Void,Void,Void> {
16 public ReadRssFeedTask(Activity activity) {
17 ..............
18 }
19 protected void onPreExecute() {
20 ..............
21 }
22 @Override
23 protected Void doInBackground(Void... tmp){
24 ..............
25 }
26
27 @Override
28 protected void onPostExecute(Void result){
29
30 //liste mit Daten füllen
31 List<String> rssteaser = myContent.getSummary();
32 List<String> rssimage = myContent.getImgLink();
33 List<String> rssdate_update = myContent.getUpdated();
34 List<String> rssdate_publish = myContent.getPublished();
35 List<String> rssauthor = myContent.getAuthor();
36 List<String> rsstitle = myContent.getTitel();
37 List<String> rsscontent = myContent.getContent();
38
39 // Ab hier jetzt verarbeiten und an die ListView übergeben
40 // ArrayList die aus mehreren HashMaps besteht
41 ArrayList<HashMap<String, List<String>>> mylist = new ArrayList<HashMap<String, List<String>>>();
42 // HashMap, welche aus 2 Strings besteht (key + value)
43 HashMap<String, List<String>> map;
44
45 // Die Daten anpassen und in der HashMap speichern
46 for (int i = 0; i < rsstitle.size(); i++) {
47
48 map = new HashMap<String, List<String>>();
49
50 // Das Datum schön angepasst in das Datumsfeld schreiben
51 map.put("datum", rssdate_update);
52 // Die Essensbeschreibung in das Beschreibungsfeld kopieren.
53 map.put("beschreibung", rssteaser);
54 mylist.add(map);
55 }
56
57 // Den SimpleAdapter erstellen
58 SimpleAdapter mSchedule = new SimpleAdapter(this, mylist, R.layout.listview_layout, new String[] { "datum",
59 "beschreibung" }, new int[] { R.id.date, R.id.teaser });
60
61 /* HIER WIRD FOLGENDER FEHLER ANGEZEIGT: "The constructor SimpleAdapter(RSSMain.ReadRssFeedTask, ArrayList<HashMap<String,String>>, int, String[], int[]) is undefined" */
62
63 // Den SimpleAdapter in der ListActivity setzen
64 liste.setAdapter(mSchedule);
65
66 }
67 }
68}
Ich bin noch ziemlich am Anfang in der Android-Programmierung.
Wie kann ich denn diesen Fehler beheben?
EDIT:Ich habs auch mit dem Code von Kullorki versucht:
1public class RSSMain extends Activity {
2.............
3@Override
4 protected void onPostExecute(Void result){
5liste.setAdapter(new RSSListAdapter<String>(RSSMain.this, R.layout.image_text_layout, myContent.getImgLink(), myContent.getUpdated(), myContent.getPublished(), myContent.getAuthor(), myContent.getTitel(), myContent.getSummary(), myContent.getContent()));
6}
7.............
8}
1public class RSSListAdapter<ViewHolder> extends ArrayAdapter<String>
2{
3 private LayoutInflater mInflater;
4 private ImageView imageView;
5 private TextView textView_title;
6 private TextView textView_date;
7 private TextView textView_creator;
8 private TextView textView_teaser;
9 private TextView textView_content;
10 private TextView textView_imagelink;
11
12 public RSSListAdapter(Context context,int id, List<String> imagelink, List<String> date_updated, List<String> date_published, List<String> author, List<String> title, List<String> summary, List<String> content){
13
14 super(context,id);
15 mInflater = LayoutInflater.from(context);
16
17 }
18
19 @Override
20 public View getView(int position, View convertView, ViewGroup parent){
21
22 //textview füllen - aber wie?
23 imageView = (ImageView) convertView.findViewById(R.id.feed_image);
24 textView_title = (TextView) convertView.findViewById(R.id.job_title);
25 textView_date = (TextView) convertView.findViewById(R.id.job_date);
26 textView_creator = (TextView) convertView.findViewById(R.id.job_creator);
27 textView_teaser = (TextView) convertView.findViewById(R.id.job_teaser);
28 textView_content = (TextView) convertView.findViewById(R.id.job_content);
29 textView_imagelink = (TextView) convertView.findViewById(R.id.job_imagelink);
30
31 return convertView;
32 }
33
34
35// public int getCount()
36// {
37// return array.length
38// }
39
40 class ViewHolder{
41 TextView textView_title;
42 TextView textView_date;
43 TextView textView_creator;
44 TextView textView_teaser;
45 TextView textView_content;
46 TextView textView_imagelink;
47 }
48
49}
Im Prinzip habe ich das ja glaube ich schon etwas verstanden, nur wie ich an die "List<String>"-Elemente komme verstehe ich nicht. Dem "super(context,id);" kann ich noch einen weiteren Parameter übergeben, aber leider keine 7 weitere um alle "List<String>"-Elemente abzudecken.
Wie komm ich denn nun an die "List<String>"-Elemente ran um die Views zu füllen?
Welche Variante wäre denn eigentlich grundsätzlich zu empfehlen?
Der Code von kruemelnerd oder der von Kullorki?
— geändert am 20.02.2013, 17:04:44
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.