2012-04-07 3 views
0

Ich verwende den Code für die Radauswahl von here. Also lassen Sie uns sagen, dass ich etwas wie die Städteaktivitäten implementieren möchte. Code ist unten. Was ich jetzt will ist: wenn der Benutzer mit dem Schieberegler auswählt, was er will, drücken Sie einen Knopf und gehen Sie zu einer neuen Aktivität. Also muss ich irgendwo einen buttonOnClickListener einfügen aber ich weiß nicht wo? Ich meine, wo in dem Code das vom Benutzer ausgewählte Element angegeben ist? Ich meine, wenn Sie Kanada und Vancouver wählen, drücken Sie Los und nehmen Sie ihn nach CanadaVancouverActivity, wenn Toronto nach CanadaTorontoActivity und so weiter.identifizieren, was ich von einem Rad Android gewählt habe

-Code ist hier:

package kankan.wheel.demo; 

import kankan.wheel.R; 
import kankan.wheel.widget.OnWheelChangedListener; 
import kankan.wheel.widget.OnWheelScrollListener; 
import kankan.wheel.widget.WheelView; 
import kankan.wheel.widget.adapters.AbstractWheelTextAdapter; 
import kankan.wheel.widget.adapters.ArrayWheelAdapter; 

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 

public class CitiesActivity extends Activity { 
    // Scrolling flag 
    private boolean scrolling = false; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.cities_layout); 

     final WheelView country = (WheelView) findViewById(R.id.country); 
     country.setVisibleItems(3); 
     country.setViewAdapter(new CountryAdapter(this)); 

     final String cities[][] = new String[][] { 
       new String[] {"New York", "Washington", "Chicago", "Atlanta", "Orlando"}, 
       new String[] {"Ottawa", "Vancouver", "Toronto", "Windsor", "Montreal"}, 
       new String[] {"Kiev", "Dnipro", "Lviv", "Kharkiv"}, 
       new String[] {"Paris", "Bordeaux"}, 
       }; 

     final WheelView city = (WheelView) findViewById(R.id.city); 
     city.setVisibleItems(5); 

     country.addChangingListener(new OnWheelChangedListener() { 
      public void onChanged(WheelView wheel, int oldValue, int newValue) { 
       if (!scrolling) { 
        updateCities(city, cities, newValue); 
       } 
      } 
     }); 

     country.addScrollingListener(new OnWheelScrollListener() { 
      public void onScrollingStarted(WheelView wheel) { 
       scrolling = true; 
      } 
      public void onScrollingFinished(WheelView wheel) { 
       scrolling = false; 
       updateCities(city, cities, country.getCurrentItem()); 
      } 
     }); 

     country.setCurrentItem(1); 
    } 

    /** 
    * Updates the city wheel 
    */ 
    private void updateCities(WheelView city, String cities[][], int index) { 
     ArrayWheelAdapter<String> adapter = 
      new ArrayWheelAdapter<String>(this, cities[index]); 
     adapter.setTextSize(18); 
     city.setViewAdapter(adapter); 
     city.setCurrentItem(cities[index].length/2);   
    } 

    /** 
    * Adapter for countries 
    */ 
    private class CountryAdapter extends AbstractWheelTextAdapter { 
     // Countries names 
     private String countries[] = 
      new String[] {"USA", "Canada", "Ukraine", "France"}; 
     // Countries flags 
     private int flags[] = 
      new int[] {R.drawable.usa, R.drawable.canada, R.drawable.ukraine, R.drawable.france}; 

     /** 
     * Constructor 
     */ 
     protected CountryAdapter(Context context) { 
      super(context, R.layout.country_layout, NO_RESOURCE); 

      setItemTextResource(R.id.country_name); 
     } 

     @Override 
     public View getItem(int index, View cachedView, ViewGroup parent) { 
      View view = super.getItem(index, cachedView, parent); 
      ImageView img = (ImageView) view.findViewById(R.id.flag); 
      img.setImageResource(flags[index]); 
      return view; 
     } 

     @Override 
     public int getItemsCount() { 
      return countries.length; 
     } 

     @Override 
     protected CharSequence getItemText(int index) { 
      return countries[index]; 
     } 
    } 
} 

Antwort

2

Schließlich fand ich die Antwort. Es gibt eine Funktion im Paket getCurrentItem().

Verwandte Themen