我有以下Fragment类:

public class TabFragment extends Fragment {
  ....
 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
   {
     View view =  inflater.inflate(R.layout.fragment_photos_tab, container, false);
     TabelAdapter adapt = new TabelAdapter(getActivity().getApplicationContext(), R.layout.list_room_view, flowerList);
     setListAdapter(adapt);     // Not Working because class is not extended by ListActivity
     return view;
   }


TabelAdapter类

public class TabelAdapter extends ArrayAdapter<Flower> {

 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
   LayoutInflater inflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
   if (null == convertView) {
        convertView = inflater.inflate(R.layout.list_flower_view, parent, false);
    }
    Picasso
            .with(context)
            .load("http://i.imgur.com/rFLNqWI.jpg")
            .fit()
            .into((ImageView) convertView);
    return convertView;
}


list_flower_view.xml

<?xml version="1.0" encoding="utf-8"?>

<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/Flowerimg"
    android:layout_width="match_parent"
    android:layout_height="200dp"/>


activity_home.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" tools:context=".MainActivity">

<ListView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@android:id/list"></ListView>
</RelativeLayout>


当我使用activity而不是fragment时,整个过程非常简单。我用MainActivity扩展ListActivity类,并将setContentView(R.layout.activity_home);添加到MainActivity.OnCreate()中。我可以在ListView中看到图像列表。



如何使setListAdapterFragment类中可用?我是Android的新手。任何帮助将是可观的:)

编辑1

public class PagerAdapter extends FragmentStatePagerAdapter {
int mNumOfTabs;

public PagerAdapter(FragmentManager fm, int NumOfTabs) {
    super(fm);
    this.mNumOfTabs = NumOfTabs;
}

@Override
public Fragment getItem(int position) {

    switch (position) {
        case 0:
            TabFragment photo = new TabFragment();
            return photo;  // Line (30,24)
  }        ......
 }


如果我使用ListFragment而不是Fragment,则PagerAdapter类会抛出错误。

Error:(30, 24) error: incompatible types: TabFragment cannot be converted to Fragment


编辑2

java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'

最佳答案

Fragment更改为ListFragment

 public class TabFragment extends ListFragment {

@Override
      public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        TabelAdapter adapt = new TabelAdapter(getActivity().getApplicationContext(), R.layout.list_room_view, flowerList);
        setListAdapter(adapt);
       }
     ...
    }


ListFragment documentation

Tutorial

07-26 08:26