Android ListView片段上的RSS阅读器



所以。我对碎片很着迷,最后几天我试着在一个有很多碎片的应用程序中展示一个非常简单的RSS阅读器。我遵循了一个指南(实际上有很多指南,但这个指南的代码较少……只是为了学习:http://www.html.it/pag/19519/android-e-le-applicazioni-di-rete/)。

这是关于片段的xml,我想在其中显示RSS阅读器(称为fragment_main.xml)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:background="#607D8B"
tools:context=".MainActivity$PlaceholderFragment"
android:id="@+id/main1">
<ImageView
    android:id="@+id/newsBanner1"
    android:layout_width="wrap_content"
    android:layout_height="120sp"
    android:layout_marginTop="0dp"
    android:gravity="top"
    android:layout_marginBottom="10dp"
    android:src="@drawable/news_banner"/>
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="News:"
    android:id="@+id/newsTitleText1"
    android:textSize="20dp"
    android:textStyle="bold"
    android:layout_marginTop="140dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />
<ScrollView
    android:id="@+id/scrollerNews1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/newsTitleText1"
    android:layout_marginTop="8dp"
    android:scrollbars="vertical"
    android:fillViewport="true">
    <ListView
        android:id="@+id/rssListView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</ScrollView>

是的,它有"main1"id,因为它是应用程序打开时的"默认"布局片段。这是java类

public class NewsFragment extends Fragment {
String feedUrl = "";
ListView rssListView = null;
ArrayList<RSSItem> RSSItems = new ArrayList<RSSItem>();
ArrayAdapter<RSSItem> array_adapter = null;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                     Bundle savedInstanceState){
    View setView = inflater.inflate(R.layout.fragment_main, container, false);
    feedUrl = "sample_feed_url";
    refreshRSSList();
    rssListView = (ListView) setView.findViewById(R.id.rssListView);
    array_adapter = new ArrayAdapter<RSSItem>(this.getActivity(), R.layout.fragment_main, RSSItems);
    rssListView.setAdapter(array_adapter);
    refreshRSSList();
    return setView;
}
private void refreshRSSList() {
    ArrayList<RSSItem> newItems = RSSItem.getRSSItems(feedUrl);
    RSSItems.clear();
    RSSItems.addAll(newItems);
}

在我运行应用程序的那一刻,除了列表视图(我想它是空的)之外,所有的东西都显示出来了。

非常感谢任何愿意帮助我的人:D

初始化阵列适配器时,布局参数是错误的。您已经提到了片段的布局。这里是询问listview的布局。我指的是列表视图中项目的布局。您需要在布局中创建一个新文件,并将其命名为list_item.xml。定义list_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list_item_textview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:gravity="center_vertical">
</TextView>

现在您的阵列适配器将是

array_adapter =new ArrayAdapter(getActivity(),R.layout.list_item,R.id.list_item_textview,rssItems);

您也可以使用您定义的构造函数。我所做的明确提到了TextView的id。你可以在这里看到区别:链接。如果不起作用,请告诉我。

最新更新