0

У меня есть функция FragmentActivity, которая реализует интерфейс, класс, который расширяет AsyncTask, ListFragment и Class, который расширяет ArrayAdapter. Я вызываю AsyncTask из FragmentActivity, AsyncTask извлекает данные из Интернета и возвращает эти данные в FragmentActivity через интерфейс в методе onPostExecute. Также у меня есть xml-файл - настраиваемый элемент для ListView и xml-файла, который содержит фрагмент.ListFragment, ListView, AsyncTask, FragmentActivity

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) { 


}; 

Subscriptions.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> 

Мои данные содержатся в методе onGetDataSubscriptions (результат) Список в FragmentActivity. А как связать пользовательский адаптер с списком из FragmentActivity?

ответ

0

У вас есть много происходит в вашем вопросе, но если все, что вы спрашиваете, как связать адаптер к ListFragment, то все, что вам нужно сделать, это вызов

this.setListAdapter(adapter); 

в ListFragment. Создайте и привяжите адаптер в методе onCreate.

0

Спасибо, но это не так. Я добавил Список Предметов в классе, так и в методе onGetDataSubscriptions:

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

И в ListFragment я могу использовать эту коллекцию. Возможно, это не хорошо ...

+0

ну какая ошибка вы получаете. –

+0

ошибок нет, но это не хорошо для производительности, может быть –

+0

Я не уверен, что вы имеете в виду, это не хорошо для производительности. слишком часто вызывается onGetDataSubscriptions? Или вы обеспокоены добавлением групп 1 за раз. Я считаю, что в вашем адаптере должна быть функция addAll (Collection), которая может быть более эффективной, чем добавление их по одному за раз. –

Смежные вопросы