2017-11-03 7 views
-1

Ich muss die Textfarbe eines AppCompatSpinner ändern, wenn ein Element aus einem anderen Spinner ausgewählt wird.Spinner-Textfarbe ändern, wenn ein anderes Spinner-Element ausgewählt wurde

enter image description here

AppCompatSpinner (categorySpinner)

AppCompatSpinner (fromSpinner)

categorySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
      switch (position) { 
       case 0: 
        //Setting the upper adapter according to the category. 
        lengthAdapter = new SpinnerAdapter(getApplicationContext(), lengthList); 
        lengthAdapter.setDropDownViewResource(R.layout.item_dd_r); 
        fromSpinner.setAdapter(lengthAdapter); 

     //Need to add code to change the Text Color of fromSpinner. 
     ... 
} 
CategorySpinnerAdapter adapter = new CategorySpinnerAdapter(this, categoriesList); 
adapter.setDropDownViewResource(R.layout.cat_dd_r); 
categorySpinner.setAdapter(adapter); 

-Code für die Kategorie Adapter -

public class CategorySpinnerAdapter erweitert ArrayAdapter {

private Context context; 
private List<String> categoryItemList; 

public CategorySpinnerAdapter(Context context, List<String> categoryItemList) { 
    super(context, 0, categoryItemList); 
    this.context = context; 
    this.categoryItemList = categoryItemList; 
} 

@NonNull 
@Override 
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { 
    String item = categoryItemList.get(position); 

    View view = convertView; 
    if (view == null) { 
     view = LayoutInflater.from(parent.getContext()).inflate(R.layout.spinner_item_convert_cat, parent, false); 
    } 

    TextView spinnerText = view.findViewById(R.id.textView_spinnerItem_cat); 
    spinnerText.setText(item); 

    return view; 
} 

@Override 
public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { 
    TextView dropDownText = (TextView) super.getDropDownView(position, convertView, parent); 
    return dropDownText; 
} 
} 
+0

Bitte fügen Sie einige Screenshots ändern in Bezug auf was Sie erreichen wollen? – Mandy8055

Antwort

0

Hier ist, wie Textfarbe secondSpinner zur Auswahl Artikel von firstSpinner

boolean selected = false; 

firstSpinner.setOnItemSelectedListener(
     new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> adapterView, View view, 
        int position, long l) { 

       if (position != 0) { 
        if (!selected) selected = true; 
        secondSpinner.post(new Runnable() { 
         @Override 
         public void run() { 
          ((TextView) ((ViewGroup) secondSpinner.getSelectedView()).getChildAt(0)) 
            .setTextColor(Color.BLACK); 
         } 
        }); 
       } 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> adapterView) {} 
     }); 

secondSpinner.setOnItemSelectedListener(
     new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> adapterView, View view, 
        int position, long l) { 

       if (selected) { 
        secondSpinner.post(new Runnable() { 
         @Override 
         public void run() { 
          ((TextView) ((ViewGroup) secondSpinner.getSelectedView()).getChildAt(0)) 
            .setTextColor(Color.BLACK); 
         } 
        }); 
       } 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> adapterView) {} 
     }); 
+0

Ich denke Runnable hat es geschafft. Vielen Dank! :) –

+0

Aber was dies tut ist nur die Farbe für das erste Element ändern und nur wenn es ausgewählt ist, d. H. Standardmäßig. Diese Methode funktioniert also nicht perfekt. –

+0

@AkshanshJain Sie müssen ein boolesches Flag verwenden, das auf "true" gesetzt ist, wenn "firstSelector" ausgewählt wurde, und dann diesen Listener zum "secondSelector" hinzufügen, nach diesem Flag suchen und dasselbe runnable aufrufen, wenn true. –

Verwandte Themen