2016-05-15 2 views
4

Dies ist die Implementierung der onCreate Funktion in meiner Aktivität. Ich muss die Registerkarten dynamisch erstellen. Hier zur Vereinfachung habe ich 2 Tabs gemacht.Wie erhalte ich einen Tab Click Ereignis in Aktivität in TabLayout android

public class ActivityProductList extends AppCompatActivity { 

    private android.support.v7.widget.SearchView searchView = null; 
    private RecyclerView recyclerView; 
    MyAdapter adapter; 
    List<ParentListItem> parentListItems = new ArrayList<>(); 
    List<ParentListItem> originalProductList = new ArrayList<>(); 
    String query = null; 
    int categoryId = 0; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_products_final); 

     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setTitle("PRODUCTS"); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

     //ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 

     TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs); 
     tabLayout.addTab(tabLayout.newTab().setText("Tab 1")); 
     tabLayout.addTab(tabLayout.newTab().setText("Tab 2")); 
     //setupViewPager(viewPager); 
     //tabLayout.setupWithViewPager(viewPager); 
     //viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 

     searchView = (android.support.v7.widget.SearchView) findViewById(R.id.searchView); 
     searchView.setIconified(false); 
     searchView.onActionViewExpanded(); 
     searchView.clearFocus(); 
     searchView.setOnQueryTextListener(new android.support.v7.widget.SearchView.OnQueryTextListener() { 
      @Override 
      public boolean onQueryTextSubmit(String query) { 
       if (adapter != null) 
        filterData(query); 
       return false; 
      } 

      @Override 
      public boolean onQueryTextChange(String query) { 
       if (adapter != null) 
        filterData(query); 
       return false; 
      } 
     }); 

    } 
} 

Ich möchte Edit-Text-Wert bei Klick auf Registerkarten ändern. Dieser editText hat dieselbe Aktivität.

Wie bekomme ich ein Klickereignis in Aktivität?

+0

Wie über einen ['OnTabSelectedListener'] (https://developer.android.com/reference/android/support/design/widget/TabLayout.OnTabSelectedListener.html)? –

Antwort

12

Sie können das onTabSelected Listener für dieses

tabLayout.addOnTabSelectedListener(new OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(Tab tab) { 
      switch(tab.getPosition()) { 
       case 0: 
        .... 
      } 
     } 

P. S. setOnTabSelectedListener ist veraltet, addOnTabSelectedListener bitte verwenden Sie stattdessen

0

wenn das, was Sie wollen, ist, wenn Register nicht immer Registerkarte ausgewählt geklickt haben, Sie benutzerdefinierte Ansicht für jede Registerkarte verwenden können und als auf entsprechende Ansicht wie diese klicken handhaben:

for (int i = 0; i < tabLayout.getTabCount(); i++) { 
    final TabLayout.Tab tab = tabLayout.getTabAt(i); 
    final View tabView = LayoutInflater.from(this).inflate(
      R.layout.item_tab, (ViewGroup) tab.getCustomView(), false); 
    tabLayout.setCustomView(tabView); 

    final TextView customView = (TextView) tab.getCustomView(); 
    customView.setText(mAdapter.getPageTitle(i)); 
    final int index = i; 
    customView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (tabLayout.getSelectedTabPosition() == index) { 
       // change edittext value 
      } else { 
       tab.select(); 
      } 
     } 
    }); 
} 
+0

Eine weitere Möglichkeit, Registerkartenklicks innerhalb der Registerkarte zu behandeln, besteht darin, die Methode onTabReselected im onTabSelectedListener zu überschreiben. – urgentx

Verwandte Themen