2017-11-03 27 views
-1

다른 회 전자에서 항목을 선택하면 AppCompatSpinner의 텍스트 색을 변경해야합니다.다른 회 전자 항목을 선택한 경우 회 전자 텍스트 색 변경

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); 

코드 -

공용 클래스 CategorySpinnerAdapter가 {

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; 
} 
} 
ArrayAdapter와 확장 여기
+0

하십시오의 항목을 선택에 secondSpinner의 텍스트 색상을 변경하는 방법은? – Mandy8055

답변

0

당신이 무엇을 달성하고자하는 관련 스크린 샷을 첨부 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

나는 Runnable이 트릭을했다고 생각해. 고맙습니다! :) –

+0

하지만이 작업은 첫 번째 요소의 색상을 변경하는 것으로, 즉 기본적으로 선택되었을 때만 변경됩니다. 따라서이 방법은 완벽하게 작동하지 않습니다. –

+0

@AkshanshJain'firstSelector'가 선택되면 부울 플래그를 true로 설정 한 다음이 동일한 리스너를'secondSelector'에 추가하고, 플래그를 확인하고 true 인 경우 동일한 실행 가능 파일을 호출해야합니다. –