При использовании ArrayAdaptor в Android данные не отображаются - PullRequest
1 голос
/ 15 октября 2010

Я пишу приложение для 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>

1 Ответ

0 голосов
/ 18 октября 2010

Извините, я только что понял, что я неправильно написал Адаптер. В любом случае, я разобрался с ответом на свой вопрос, но все еще не вижу кнопку «Назад», но решил удалить ее из макета. Я переключил свою активность на ListActivity, и это решило мои проблемы, мне просто нужно было переключить пару вызовов функций, которые зависят от активности =)

...