2015-11-27 6 views
-1

У меня есть активность, в которой есть 5 фрагментов, и каждый фрагмент имеет recyclerview в нем ... Я хочу кнопку в моей деятельности, удерживая фрагмент, и когда я нажимаю кнопку, просмотр recycler начинает прокручиваться вверх ... i получить часть скроллинга и внутри фрагмента я могу легко сделать это, но как получить recyclerview фрагмента в деятельности ... пожалуйста, помогитеКак получить доступ к фрагментам RecyclerView за пределами фрагмента?

Activity.java

package com.example.khaalijeb.newlistview_module; 

import android.content.Intent; 
import android.support.design.widget.CollapsingToolbarLayout; 
import android.support.design.widget.CoordinatorLayout; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.TabLayout; 
import android.support.v4.view.ViewPager; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.WindowManager; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class Search extends AppCompatActivity { 

    ImageView navbut; 
    ViewPager pager; 
    ViewPager mPager; 
    TabLayout mTabLayout; 
    SearchPagerAdapter mAdapter; 
    SlidingTabLayout1 tabs; 
    FloatingActionButton fab2; 
    String title[] = {"All", "Restaurant", "Wellness", "Fashion", "Others"}; 
    int numoftab = 5; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_search); 
     getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); 
     ImageView back = (ImageView)findViewById(R.id.back); 
     back.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       onBackPressed(); 
      } 
     }); 



     TextView location = (TextView)findViewById(R.id.location); 
     location.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       Intent i =new Intent(Search.this,locationsearch.class); 
       startActivity(i); 

      } 
     }); 

     ImageView locationlogo = (ImageView)findViewById(R.id.locationlogo); 
     locationlogo.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent i = new Intent(Search.this,locationsearch.class); 
       startActivity(i); 
      } 
     }); 

     Button b = (Button)findViewById(R.id.click); 
     b.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 


      } 
     }); 
     mAdapter = new SearchPagerAdapter(getSupportFragmentManager(),title,numoftab); 
     getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); 
     mTabLayout = (TabLayout) findViewById(R.id.tab_layout); 
     mPager = (ViewPager) findViewById(R.id.pager); 
     mPager.setAdapter(mAdapter); 
     mTabLayout.setTabsFromPagerAdapter(mAdapter); 


     mTabLayout.setupWithViewPager(mPager); 
     mPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(mTabLayout)); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menu_search, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     int id = item.getItemId(); 

     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 

Fragment.java

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     Log.d("hii", "oncreate"); 
     View view; 
     view = inflater.inflate(R.layout.activity_all, container, false); 
     NO_MERCHANT = (TextView) getActivity().findViewById(R.id.no_merchant); 

     font = Typeface.createFromAsset(getActivity().getAssets(), "fonts/cae.ttf"); 

     mRecyclerView = (RecyclerView) view.findViewById(R.id.my_recycler_view); 

     mRecyclerView.setHasFixedSize(true); 
     final LinearLayoutManager l = new LinearLayoutManager(c); 
     mRecyclerView.setLayoutManager(l); 
     // use this setting to improve performance if you know that changes 
     // in content do not change the layout size of the RecyclerView 
    // mAdapter.setClickListener(this); 
     page = 0; 
     preLast = 0; 
     adapterinitialised = false; 

     final FloatingActionButton fab2 = (FloatingActionButton)view.findViewById(R.id.fab2); 
     fab2.setVisibility(View.INVISIBLE); 
     fab2.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       mRecyclerView.smoothScrollToPosition(0); 

      } 
     }); 
     mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { 


      @Override 
      public void onScrolled(RecyclerView recyclerView, int dx, int dy) { 
       super.onScrolled(recyclerView, dx, dy); 


       if(dy != 0) { 
        Log.i("RecyclerView scrolled: ", "scroll up!"); 
        fab2.setVisibility(View.VISIBLE); 

       } 
       else 
        Log.i("RecyclerView scrolled: ", "scroll down!"); 
        fab2.setVisibility(View.GONE); 




     /*  Log.d("hiii", "scroll hua hai"); 
       RecyclerView.Recycler recycler = null; 
       Log.d("scroll", "dx: " + dx + " dy: " + dy); 
       Integer visibleItemCount = mRecyclerView.getChildCount(); 
       Integer totalItemCount = mLayoutManager.getItemCount(); 
       Integer firstVisibleItem = ((LinearLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPosition(); 
       // Integer firstVisibleItem = mLayoutManager.findFirstVisibleItemPosition(); 
       Log.d("scroll", "visibleitemcount " + visibleItemCount); 
       Log.d("scroll", "totalitemcount " + totalItemCount); 
       Log.d("scroll", "firstvisibleitem " + firstVisibleItem); 
       final int lastItem = firstVisibleItem + visibleItemCount; 
       Log.d("scroll", "lastitem " + lastItem); 
       Log.d("hii", "lastitem " + lastItem); 

       Log.d("smooth", "firstvis : " + firstVis + " lastItem : " + lastItem); 

       if (page == 0 && visibleItemCount == totalItemCount) { 
        Log.d("hii", "did nothing "); 
       } else { 
        if (stay_on_this_page == false) { 
         Log.d("hii", "ItemCountLast"); 
         Log.d("hii", "" + preLast + "" + lastItem); 
         if (preLast != lastItem) { //to avoid multiple calls for last item 
          if (lastItem >= totalItemCount - 5) { 
           preLast = lastItem; 
           //     preLast = firstVisibleItem; 
           firstVis = firstVisibleItem + 1; 
           Log.d("llll", "preLast :" + preLast); 
           page++; 
           stay_on_this_page = true; 
           Momoe_Search_requestData(); 
          } else { 
           Log.d("hii", "Last"); 
          } 
         } else { 
          Log.d("smooth_scroll", "khali"); 
         } 
        } 

       }*/ 
      } 
     }); 
     return view; 

    } 

ответ

0

Вы n непосредственно вызывать метод в фрагменте из Activity. Этот метод в свою очередь прокрутит представление рециркуляции до нулевой позиции. Операция вызовет экземпляр верхнего фрагмента для прокрутки.

currentFragment.scrollToTop(); 

фрагмент попросит прокрутить recyclerView

scrollToTop() 
{ 
mRecyclerView.smoothScrollToPosition(0); 
} 
Смежные вопросы