2014-05-18 3 views
2

S'il vous plaît aider un débutant à ... J'utilise ce code comme exemple/learining exercice LINKListFragment avec pagerAdapter

Dans tis exemple programme il y a trois onglets à l'aide de fragments à faire glisser. J'ai créé une nouvelle ListFragment que je voudrais afficher dans l'un des onglets, mais quand Eclipse compile, je reçois l'erreur suivante dans mon PagerAdapter:

Type mismatch: cannot convert from ContactListFragment to Fragment 

Voici mon code:

Le PagerAdapter :

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 


public class TabsPagerAdapter extends FragmentPagerAdapter { 

public TabsPagerAdapter(FragmentManager fm) { 
    super(fm); 
} 

@Override 
public Fragment getItem(int index) { 

    switch (index) { 
    case 0: 
     // Top Rated fragment activity 
     return new TopRatedFragment(); 
    case 1: 
     // Games fragment activity 
     return new ContactListFragment(); 
    case 2: 
     // Movies fragment activity 
     return new MoviesFragment(); 
    } 

    return null; 
} 

@Override 
public int getCount() { 
    // get item count - equal to number of tabs 
    return 3; 
} 

} 

Voici mon ContactListFragment.java

import android.app.Activity; 
import android.app.FragmentTransaction; 
import android.app.ListFragment; 
import android.content.Context; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.Filter; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.AdapterView.OnItemClickListener; 

public class ContactListFragment extends ListFragment { 
    private ContactAdapter mAdapter; 
    private List<ContactItem> contactItemList = new LinkedList<ContactItem>(); 

    private LayoutInflater mInflater; 
    public boolean taskRun = false; 
    long currentID = 0; 
    long currentContactID = 0; 
    public ContactListFragment() {} 
    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     mInflater = (LayoutInflater) getActivity().getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
     if(!taskRun){ 
      FragmentTransaction ft = getFragmentManager().beginTransaction(); 
      ListContactTask task= new ListContactTask(getActivity(),ft); 
      task.execute(); 
     } 
     taskRun = true; 
     mAdapter = new ContactAdapter(getActivity(), R.layout.lvmain,R.id.key, contactItemList); 
     mAdapter .setInflater(mInflater); 
     mAdapter.setLayout(R.layout.lvmain); 
     setListAdapter(mAdapter); 
     ListView listView = getListView(); 
     getListView().invalidate(); 
    } 

    public void setDataList(List<ContactItem> list) { 
     Activity act = getActivity(); 
     this.contactItemList = list; 
     if(act != null) { 
      mAdapter = new ContactAdapter(act, R.layout.lvmain,R.id.key, list); 
      mAdapter .setInflater(mInflater); 
      mAdapter.setLayout(R.layout.lvmain); 
      setListAdapter(mAdapter); 
      getListView().invalidate(); 
     } 
    } 
} 
class ContactAdapter extends ArrayAdapter<ContactItem> { 

     private static String TAG = ContactAdapter.class.getName(); 
     private LayoutInflater inflator = null; 
     List<ContactItem> pairList = null; 
     private int layout; 
     public ContactAdapter(Context context, int resource, 
       int textViewResourceId, List<ContactItem> objects) { 
      super(context, resource, textViewResourceId, objects); 
      this.pairList = objects; 
     } 

     public void setInflater(LayoutInflater mInflater) { 
      this.inflator = mInflater; 
     } 
     public void setLayout(int layout){ 
      this.layout = layout; 
     } 

     /** 
     * Make a view to hold each row. 
     * 
     * @see android.widget.ListAdapter#getView(int, android.view.View, 
     *  android.view.ViewGroup) 
     */ 
     public View getView(final int position, View convertView, 
       ViewGroup parent) { 
      ViewHolder holder; 
      try { 
       if (convertView == null) { 
        convertView = this.inflator.inflate(
          layout, null); 
        holder = new ViewHolder(); 
        holder.key = (TextView) convertView 
          .findViewById(R.id.key); 
        holder.value = (TextView)  convertView.findViewById(R.id.value); 
        convertView.setTag(holder); 
       }else { 
        holder = (ViewHolder) convertView.getTag(); 
       } 
       ContactItem pair = (ContactItem) getItem(position); 
       String key = pair.mDisplayName; 
       String value = pair.mPhone; 

       holder.key.setText(key); 
       holder.value.setText(value); 

      } catch (Exception e) { 
       Log.e(TAG, e.toString(), e); 
      } 
      return convertView; 
     } 

     static class ViewHolder { 
      TextView key; 
      TextView value; 
     } 

     public Filter getFilter() { 
      return null; 
     } 

     public long getItemId(int position) { 
      return 1; 
     } 

     public int getCount() { 
      return pairList.size(); 
     } 

     public ContactItem getItem(int position) { 
      return (ContactItem) super.getItem(position); 
     } 

     @Override 
     public int getItemViewType(int position) { 
      return super.getItemViewType(position); 
     } 

     @Override 
     public int getViewTypeCount() { 
      return super.getViewTypeCount(); 
     } 

     @Override 
     public boolean isEmpty() { 
      return super.isEmpty(); 
     } 
    } 

M y lvmain.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 

<ListView 
    android:id="@+id/list" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:cacheColorHint="#00000000" 
    android:divider="#00000000"/> 

</RelativeLayout> 

Tout comme un FYI, Tout compile très bien avant d'essayer d'ajouter le ListFragment dans l'adaptateur de téléavertisseur. Toute aide serait grandement appréciée. Merci d'avance

Répondre

1

Dans votre ContactListFragment classe import android.support.v4.app.ListFragment il. Je pense que ça va marcher. Merci

+0

C'était ça. Je vous remercie! – nmiltner

+0

merci. vous devez l'accepter sinon il montrera comme sans réponse –

1

Vous avez importé android.app.ListFragment dans le ContactListFragment. Essayez d'importer android.support.v4.app.ListFragment. Remplacez également android.app.FragmentTransaction par android.support.v4.app.FragmentTransaction.

+0

C'était le problème. Je vous remercie. – nmiltner

+0

Maintenant, pour que la liste apparaisse réellement ... – nmiltner