ListFragment、ListView、AsyncTask、FragmentActivity
我有一个FragmentActivity,它实现了接口、扩展AsyncTask的类、ListFragment和扩展ArrayAdapter的类。 我从FragmentActivity调用AsyncTask,AsyncTask从internet获取数据,并通过onPostExecute方法中的接口将该数据返回给FragmentActivity。 我还有一个xml文件——ListView的自定义项和包含片段的xml文件 rssitemlistativity.javaListFragment、ListView、AsyncTask、FragmentActivity,listview,interface,android-asynctask,android-arrayadapter,android-listfragment,Listview,Interface,Android Asynctask,Android Arrayadapter,Android Listfragment,我有一个FragmentActivity,它实现了接口、扩展AsyncTask的类、ListFragment和扩展ArrayAdapter的类。 我从FragmentActivity调用AsyncTask,AsyncTask从internet获取数据,并通过onPostExecute方法中的接口将该数据返回给FragmentActivity。 我还有一个xml文件——ListView的自定义项和包含片段的xml文件 rssitemlistativity.java public class Rs
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) {
};
公共类rssitemlistativity扩展了FragmentActivity实现
RssItemListFragment.Callbacks,SubscriptionsListener{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
...
新订阅(this.execute().get();
...
}
...
@凌驾
公共无效onGetDataSubscriptions(列表结果){
};
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;
}
}
公共类订阅扩展了异步任务{
私有订阅侦听器;
订阅(订阅侦听器侦听器){
this.listener=listener;
}
@凌驾
受保护列表doInBackground(字符串…arg0){
返回CallService(arg0[0]);
}
@凌驾
受保护的void onPostExecute(列表结果){
onGetDataSubscriptions(结果);
}
私有列表调用服务(字符串令牌){
...
返回条目;
}
}
SubscriptionsListener.java
public interface SubscriptionsListener {
void onGetDataSubscriptions(List<Group> result);
}
公共接口订阅侦听器{
作废onGetDataSubscriptions(列表结果);
}
活动\u rssitem\u 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方法(列表结果)中。
以及如何从FragmentActivity将自定义适配器绑定到列表?您的问题有很多,但如果您要问的是如何将适配器绑定到ListFragment,那么您所要做的就是调用
this.setListAdapter(adapter);
在ListFragment中。在onCreate方法中创建并绑定适配器。谢谢,但事实并非如此。
我在类和方法onGetDataSubscriptions中添加了列表项:
@Override
public void onGetDataSubscriptions(List<Group> result) {
for (Group group : result) {
ItemContent.ITEMS.add(group);
}
};
@覆盖
公共无效onGetDataSubscriptions(列表结果){
对于(组:结果){
ItemContent.ITEMS.add(组);
}
};
在ListFragment中,我可以使用这个集合。
可能不好…我不确定您所说的对性能不好是什么意思。OnGetDataSubscripts是否被调用得太频繁?或者您是否担心一次添加一个组。我相信适配器中应该有一个addAll(Collection)函数,这可能比一次添加一个组更有效。