2010-10-15 2 views
1

J'écris une application Android qui charge dans les données d'un flux RSS et répertorie les éléments disponibles, et leur description. Il y a 2 cas dans lesquels j'utilise ArrayAdaptor. On travaille et on ne le fait pas. Le premier liste les flux disponibles (en ce moment les URL de flux sont codés en dur), et celui-là fonctionne. MainActivity.javaLorsque vous utilisez ArrayAdaptor dans Android, Les données ne sont pas affichées

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    this.setContentView(R.layout.main); 

    UpdateDisplay(); 
} 

private void UpdateDisplay() 
{ 
    ListView itemlist = (ListView) findViewById(R.id.itemlist); 
    java.util.ArrayList<String> channels = new java.util.ArrayList<String>(); 

    for(int i=0;i<RSS_FEEDS.length;i++){ 
     channels.add(RSS_FEEDS[i][0]); 
    } 

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, channels); 
    itemlist.setAdapter(adapter); 
    itemlist.setOnItemClickListener(this); 
} 

Le deuxième ArrayAdaptor est utilisé dans une autre activité qui génère le premier en sélectionnant un flux à afficher. Le RSSFeed est analysé, et il renvoie des données valides (je l'ai testé en dehors de l'environnement android, et cela a fonctionné, recompilé dans android, et ça marche toujours, donc le RSSParser n'est pas le problème). RSSFeed.java

public void onCreate(Bundle b){ 
    super.onCreate(b); 

    setContentView(R.layout.feedlayout); 

    UpdateDisplay(); 
} 

private void UpdateDisplay() 
{ 
    String feedUrl = null; 

    Intent startingIntent = getIntent(); 
    if(startingIntent != null){ 
     Bundle args = startingIntent.getBundleExtra("android.intent.extra.INTENT"); 
     if(args != null){ 
      feedUrl = args.getString("URL"); 
      feedTitle = args.getString("title"); 
     }else{ 
      feedTitle = "No Available RSS Feed"; 
     } 
    }else{ 
     feedTitle = "Error finding parent Intent"; 
    } 

    ListView lv = (ListView)findViewById(R.id.storylist); 

    if(feedUrl != null){ 
     // Get Feed Items 
     RSSFeed feed = getFeed(feedUrl); 

     ArrayList<String> values = loadItems(feed); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,values); 

     lv.setAdapter(adapter); 
     lv.setOnItemClickListener(this); 
    } 

    TextView title = (TextView)this.findViewById(R.id.feedtitle); 
    title.setText(feedTitle); 
    Button backbutton = (Button)findViewById(R.id.backbutton_2); 
    backbutton.setOnClickListener(new Button.OnClickListener() { 
     public void onClick(View v) { 
      finish(); 
     } 
    }); 

} 

J'utilise la mise en page android.R.layout.simple_list_item_1 dans les deux endroits, mais il ne fonctionne que dans le premier. Le bouton de retour n'est pas non plus affiché pour une raison quelconque. Voici le fichier feedlayout.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
<TextView 
    android:id="@+id/feedtitle" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    /> 
<ListView 
    android:id="@+id/storylist" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    /> 
<Button 
    android:id="@+id/backbutton_2" 
    android:text="Back" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    /> 
</LinearLayout> 
+0

Êtes-vous capable de voir le bouton de retour dans la disposition de ce fichier xml? – viv

+0

J'ai 3 mises en page, et 2 d'entre elles ont un bouton de retour, donc j'ai nommé un bouton de retour, et l'autre backbutton_2. la mise en page XML affichée a backbutton_2. Lorsque j'entre dans l'activité Flux, tout ce que je peux voir à l'écran est la première vue - le TextView appelé "feedtitle". – Neil

Répondre

0

Désolé, je viens de réaliser que je mal orthographié adaptateur. Quoi qu'il en soit, j'ai trouvé la réponse à ma question, mais je ne peux toujours pas voir le bouton de retour, mais j'ai décidé de le retirer de la mise en page tous ensemble. J'ai changé mon activité en une ListActivity, et cela a résolu mes problèmes, j'ai juste dû commuter quelques appels de fonction qui dépendent de l'activité =)

Questions connexes