0

我有一个实现接口的 FragmentActivity、扩展 AsyncTask 的类、ListFragment 和扩展 ArrayAdapter 的类。我从 FragmentActivity 调用 AsyncTask,AsyncTask 从 Internet 获取数据并通过 onPostExecute 方法中的接口将此数据返回给 FragmentActivity。我还有一个 xml 文件 - ListView 的自定义项和包含片段的 xml 文件。

RssItemListActivity.java

 public class RssItemListActivity extends FragmentActivity implements
    RssItemListFragment.Callbacks, SubscriptionsListener {

     @Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
      ...
           new Subscriptions(this).execute().get();
      ...
     }

...


    @Override
public void onGetDataSubscriptions(List<Group> result) {


};

订阅.java

    public class Subscriptions extends AsyncTask<String, Void, List<Group>> {

private SubscriptionsListener listener;

Subscriptions(SubscriptionsListener listener) {

    this.listener = listener;
}

@Override
protected List<Group> doInBackground(String... arg0) {
    return CallService(arg0[0]);
}

@Override
protected void onPostExecute(List<Group> result) {

    listener.onGetDataSubscriptions(result);

}

private List<Group> CallService(String token) {
    ...
    return entries;
}
    }

SubscriptionsListener.java

    public interface SubscriptionsListener {

void onGetDataSubscriptions(List<Group> result);
    }

activity_rssitem_list.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout 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:layout_marginLeft="16dp"
    android:layout_marginRight="16dp"
    android:orientation="vertical" >

     <fragment
    android:id="@+id/rssitem_list"
    android:name="ru.develop.yaggregator.RssItemListFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginLeft="16dp"
    android:layout_marginRight="16dp"
    tools:layout="@android:layout/list_content" >
    </fragment>
    </LinearLayout>

rss_item_subscription.xml

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

    <TextView
    android:id="@+id/text1"
    android:layout_width="wrap_content"
    android:textAppearance="?android:attr/textAppearance"
    android:layout_height="wrap_content" />

    <TextView
    android:id="@+id/text2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearance"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true" />

    </RelativeLayout>

我的数据包含在 FragmentActivity 的 onGetDataSubscriptions(List result) 方法中。以及如何将自定义适配器绑定到来自 FragmentActivity 的列表?

4

2 回答 2

0

您的问题有很多问题,但是如果您要问的只是如何将适配器绑定到 ListFragment,那么您所要做的就是调用

this.setListAdapter(adapter);

在 ListFragment 中。在 onCreate 方法中创建和绑定适配器。

于 2013-04-15T04:51:21.503 回答
0

谢谢,但事实并非如此。我在类和方法 onGetDataSubscriptions 中添加了 List ITEMS:

    @Override
public void onGetDataSubscriptions(List<Group> result) {
        for (Group group : result) {
            ItemContent.ITEMS.add(group);
        }
 };

在 ListFragment 中我可以使用这个集合。或许不好...

于 2013-04-15T14:22:02.917 回答