Я пишу приложение для Android, которое загружает данные из RSS-канала и перечисляет доступные элементы и их описание.Есть 2 случая, в которых я использую ArrayAdaptor.Один работает, а другой нет.В первом перечислены доступные каналы (сейчас URL-адреса каналов жестко заданы), и этот работает.MainActivity.java
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);
}
Второй ArrayAdaptor используется в другом действии, которое первое генерирует, выбирая канал для просмотра.RSSFeed анализируется, и он возвращает действительные данные (я проверил их вне среды Android, и он работал, перекомпилировал его в Android, и он все еще работает, поэтому RSSParser не является проблемой).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();
}
});
}
Я использую макет android.R.layout.simple_list_item_1 в обоих местах, но он работает только в первом.Кнопка Backbutton также по какой-то причине не отображается.Вот файл 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>