2015-10-22 3 views
0

J'ai créé une page Activité sur cette page Fragment et j'y ai apporté les modifications nécessaires, mais cette erreur est survenue, mais aidez-moi à m'en sortir. J'ai une activité qui a deux fragments et celui-ci est l'un de ces deux. Et bien que ce soit une vue de liste si je clique dessus la deuxième est l'affichage de l'autre côté de la même page d'activité. C'est toute la fonctionnalité principale que je veux faire.com.handmark.pulltorefresh.library.PullToRefreshListView ne peut pas être converti en android.widget.ListView

public class FreagmentMainCategory extends Fragment{ 

    private LinearLayout llLayoutmain; 
    private FragmentActivity faActivitymain; 
    private ListView lstCategoryList; 
    private SelectCategoryTask mAuthTask = null; 
    private View mServiceStatusView; 
    CategoryDetails mainCategory; 
    private categoryListAdapter adapterList;  
    static final int MENU_MANUAL_REFRESH = 0; 
    static final int MENU_DISABLE_SCROLL = 1; 
    static final int MENU_SET_MODE = 2; 
    static final int MENU_DEMO = 3; 
    private View lstListView; 
    private PullToRefreshListView mPullRefreshListView; 

    @SuppressLint("NewApi") 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

     //faActivitymain = (FragmentActivity) super.getActivity(); 
     View view = inflater.inflate(R.layout.activity_fragment_main,container, false); 

     this.getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); 
     FontUtils.setCustomFont(getActivity().findViewById(R.id.mainView), getActivity().getAssets()); 

     lstListView= view.findViewById(R.id.lstCategoryView); 
     mPullRefreshListView = (PullToRefreshListView)view.findViewById(R.id.lstCategory); 
     // Set a listener to be invoked when the list should be refreshed. 
     mPullRefreshListView.setOnRefreshListener(new OnRefreshListener<ListView>() { 
      @Override 
      public void onRefresh(PullToRefreshBase<ListView> refreshView) { 
       String label = DateUtils.formatDateTime(getActivity().getApplicationContext(), System.currentTimeMillis(), 
         DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_ALL); 

       // Update the LastUpdatedLabel 
       refreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label); 

       // Do work to refresh the list here. 
       new GetDataTask().execute(); 
      } 
     }); 
     mPullRefreshListView.setOnLastItemVisibleListener(new OnLastItemVisibleListener() { 

      @Override 
      public void onLastItemVisible() { 

      } 
     }); 
     lstListView=(View)view.findViewById(R.id.lstCategoryView); 

     lstCategoryList = (ListView)view.findViewById(R.id.lstCategory);//got error in this line  

     //lstCategoryList = (ListView) inflater.inflate(R.layout.activity_fragment_main, container, false); 
     lstCategoryList = mPullRefreshListView.getRefreshableView(); 

     registerForContextMenu(lstCategoryList); 


     mServiceStatusView = view.findViewById(R.id.service_status); 
     //txtTitle=(TextView) getActivity().findViewById(R.id.serviceText); 
     //txtTitle.setText(getActivity().getResources().getString(R.string.title_select_category));  
     showProgress(true); 
     mAuthTask = new SelectCategoryTask(); 
     mAuthTask.execute((Void) null); 
     lstCategoryList.setOnItemClickListener(new OnItemClickListener(){ 
       public void onItemClick(AdapterView<?> parent, View v, int position,long arg3) {  
        Fragment fragment = new Fragment(); 
        Bundle bundle = new Bundle(); 
        //bundle.putInt(key, value); 

       //Intent subCategoryIntent = new Intent(getActivity().getApplication(),FragmentSubCategory.class);    
       bundle.putString("MainCategoryId", mainCategory.masterinfo.get(position-1).maincatid); 
       bundle.putString("MainCategoryName", mainCategory.masterinfo.get(position-1).maincatname); 
       //subCategoryIntent.putExtra("MainCategoryId", mainCategory.masterinfo.get(position-1).maincatid); 
       //subCategoryIntent.putExtra("MainCategoryName", mainCategory.masterinfo.get(position-1).maincatname); 
       //getActivity().getApplication().startActivity(subCategoryIntent); 
       fragment.setArguments(bundle); 
      } 
     }); 
     return view; 
    } 

    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getActivity().getMenuInflater().inflate(R.menu.activity_service, menu); 
     return true; 
    } 

    @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2) 
    private void showProgress(final boolean show) { 
     // On Honeycomb MR2 we have the ViewPropertyAnimator APIs, which allow 
     // for very easy animations. If available, use these APIs to fade-in 
     // the progress spinner. 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) { 
      int shortAnimTime = getResources().getInteger(
        android.R.integer.config_shortAnimTime); 

      mServiceStatusView.setVisibility(View.VISIBLE); 
      mServiceStatusView.animate().setDuration(shortAnimTime) 
        .alpha(show ? 1 : 0) 
        .setListener(new AnimatorListenerAdapter() { 
         @Override 
         public void onAnimationEnd(Animator animation) { 
          mServiceStatusView.setVisibility(show ? View.VISIBLE 
            : View.GONE); 
         } 
        }); 

      lstListView.setVisibility(View.VISIBLE); 
      lstListView.animate().setDuration(shortAnimTime) 
        .alpha(show ? 0 : 1) 
        .setListener(new AnimatorListenerAdapter() { 
         @Override 
         public void onAnimationEnd(Animator animation) { 
          lstCategoryList.setVisibility(show ? View.GONE 
            : View.VISIBLE); 
         } 
        });   

     } else { 
      // The ViewPropertyAnimator APIs are not available, so simply show 
      // and hide the relevant UI components. 
      mServiceStatusView.setVisibility(show ? View.VISIBLE : View.GONE); 
      lstListView.setVisibility(show ? View.GONE : View.VISIBLE);   

     } 
    } 

    public class GetDataTask extends AsyncTask<Void, Void, Boolean> { 

     @Override 
     protected Boolean doInBackground(Void... params) { 
      // Simulates a background job. 
      ServerAccess sa=new ServerAccess(); 
      mainCategory=sa.GetMainCategory(); 
      return true; 
     } 

     @Override 
     protected void onPostExecute(Boolean result) { 
      if(mainCategory==null){ 
       Toast.makeText(getActivity().getApplicationContext(), getResources().getString(R.string.error_check_network), Toast.LENGTH_LONG).show(); 
       lstCategoryList.setAdapter(null); 
      }else if(mainCategory.code.equals("MOB01")){ 
       adapterList=new categoryListAdapter(getActivity().getApplicationContext(), mainCategory.masterinfo); 
       lstCategoryList.setAdapter(null); 
      }else if(mainCategory.code.equals("MOB02")){ 

       lstCategoryList.setAdapter(null); 
      }else{ 
       Toast.makeText(getActivity().getApplicationContext(), getResources().getString(R.string.error_genric_error), Toast.LENGTH_LONG).show(); 
       lstCategoryList.setAdapter(null); 
      } 


      // Call onRefreshComplete when the list has been refreshed. 
      mPullRefreshListView.onRefreshComplete(); 

      super.onPostExecute(result); 
     } 
    } 

    public class SelectCategoryTask extends AsyncTask<Void, Void, Boolean> { 

     @Override 
     protected Boolean doInBackground(Void... params) {   
      ServerAccess sa=new ServerAccess(); 
      mainCategory=sa.GetMainCategory();   
      return true; 
     } 

     @Override 
     protected void onPostExecute(final Boolean success) { 
      mAuthTask = null; 
      showProgress(false); 
      if(mainCategory==null){ 
       Toast.makeText(getActivity().getApplicationContext(), getResources().getString(R.string.error_check_network), Toast.LENGTH_LONG).show(); 
       lstCategoryList.setAdapter(null); 
      }else if(mainCategory.code.equals("MOB01")){ 
       adapterList=new categoryListAdapter(getActivity().getApplicationContext(), mainCategory.masterinfo); 
       lstCategoryList.setAdapter(adapterList); 
      }else if(mainCategory.code.equals("MOB02")){ 
       lstCategoryList.setAdapter(null); 
      }else{ 
       Toast.makeText(getActivity().getApplicationContext(), getResources().getString(R.string.error_genric_error), Toast.LENGTH_LONG).show(); 
       lstCategoryList.setAdapter(null); 
      }   
     } 

     @Override 
     protected void onCancelled() { 
      mAuthTask = null; 
      showProgress(false); 
     } 
    } 
    class categoryListAdapter extends BaseAdapter {   
     List<Category> mainItems; 
     Context myContext; 
     public categoryListAdapter(Context context, List<Category> items) { 
      myContext = context; 
      mainItems = items;    

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

     public Object getItem(int index) {   
      return mainItems.get(index); 
     } 

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

     @Override 
     public View getView(int position, View convertView, ViewGroup parent ) { 
      // TODO Auto-generated method stub 
      RelativeLayout layout = new RelativeLayout(myContext);   
      TextView tv = new TextView(myContext); 
      tv.setText(mainItems.get(position).maincatname); 
      tv.setGravity(Gravity.LEFT); 
      tv.setTextSize(16); 
      tv.setPadding(20, 20, 0, 20); 
      tv.setTextColor(myContext.getResources().getColor(R.color.BlackColor)); 
      RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams 
      (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
      lp.addRule(RelativeLayout.ALIGN_PARENT_LEFT); 
      layout.addView(tv,lp);   
      return layout; 
     } 
    } 

}

Voici mon code xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/mainView" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:background="@drawable/bg_main" 
tools:context=".FreagmentMainCategory" > 


<LinearLayout 
    android:id="@+id/lstCategoryView" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/serviceHeaderBar" 

    android:orientation="vertical" > 

    <!-- The PullToRefreshListView replaces a standard ListView widget. --> 

    <com.handmark.pulltorefresh.library.PullToRefreshListView 
     android:id="@+id/lstCategory" 
     android:layout_width="fill_parent" 
     android:layout_height="match_parent" 
     android:cacheColorHint="#00000000" 
     android:divider="#19000000" 
     android:dividerHeight="4dp" 
     android:fadingEdge="none" 
     android:fastScrollEnabled="false" 
     android:footerDividersEnabled="false" 
     android:headerDividersEnabled="false" 
     android:smoothScrollbar="true" /> 
</LinearLayout> 

<RelativeLayout 
    android:id="@+id/service_status" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:visibility="gone" > 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:background="@drawable/progress_bg" 
     android:orientation="vertical" 
     android:visibility="visible" > 

     <ProgressBar 
      android:id="@+id/loadingBar" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="10dp" /> 

     <TextView 
      android:id="@+id/service_status_message" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:layout_marginBottom="10dp" 
      android:layout_marginLeft="10dp" 
      android:layout_marginRight="10dp" 
      android:layout_marginTop="10dp" 
      android:gravity="center_vertical" 
      android:tag="normal" 
      android:text="@string/title_please_wait" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:textColor="@color/BlackColor" 
      android:textSize="@dimen/MainSize" /> 
    </LinearLayout> 
</RelativeLayout> 
+0

cherchez-vous à glisser pour actualiser comme nouvelle application gmail – Jinu

+0

Monsieur j'ai eu quelques problèmes de fonctionnalité et je l'ai eu, btw merci beaucoup pour votre temps précieux pour moi .. :) – Sudhansu

Répondre

0

PullToRefreshListView est une enveloppe autour de la ListView, il ne couvre pas ListView, de sorte que vous ne pouvez pas lancer directement. Vous pouvez convertir la valeur de retour de findViewById en PullToRefreshListView et appeler getRefreshableView() pour récupérer la sous-couche ListView. Cette ligne

lstCategoryList = (ListView)view.findViewById(R.id.lstCategory);

devrait être

lstCategoryList = ((PullToRefreshListView)view.findViewById(R.id.lstCategory)).getRefreshableView();

Android a son propre widget de SwipeToRefreshLayout. Êtes-vous sûr de vouloir toujours utiliser PullToRefreshListView?

+0

Il a travaillé monsieur merci beaucoup et Je sais que monsieur android a son propre Swipe ToRefreshLayout mais si je suis si nouveau à android et c'est un projet existant de notre communauté donc je ne peux pas changer les bibliothèques alors essayez de comprendre. – Sudhansu