2014-10-29 3 views
0

나는 추가 된 텍스트 필드를 제거하고 회 전자에서 선택된 텍스트를 기반으로 다른 텍스트 필드를 추가하려고합니다. 클래스에서 XML레이아웃을 새로 고치는 방법

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" 
android:background="#f4f4f4" 
android:id="@+id/taskoptionfragmentlinearlayout" > 


<TextView 
     android:layout_marginTop="10dp" 
     android:textStyle="bold" 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Select A Search Option" /> 
    <Spinner 
     android:layout_marginTop="20dp" 
     android:id="@+id/gis_search" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 
    <ProgressBar 
     android:id="@+id/progressBar1" 
     style="?android:attr/progressBarStyleLarge" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     /> 
    </LinearLayout> 

에 : 여기 내 코드는 내가 그것을 짧게 만들기 위해 코드를 요약

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)   
    { 
    final View rootView = inflater.inflate(R.layout.fragment_tasklist_options, container, false); 

     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, 
       int position, long id) { 
      ll = (LinearLayout)rootView.findViewById(R.id.taskoptionfragmentlinearlayout); 
      //create textfields.... 
      TextView tv = new TextView(getActivity()); 
      tv.setText(INPUTFLDLABELAArray.get(i)); 
      tv.setGravity(Gravity.RIGHT); 
      tv.setTextSize(18); 
      tv.setTypeface(Typeface.DEFAULT_BOLD); 
      tv.setPadding(0, 0, 15, 0); 
      ll.addView(tv); 
     } 

. 스피너의 항목을 선택하면 텍스트 필드가 표시됩니다. 다른 항목을 선택하면 텍스트 필드가 이전 텍스트 필드 아래에 표시됩니다. 그래서 내가 원하는 (새로 고침/재설정) 항목이 선택 될 때마다, 이전 텍스트 필드가 제거되고 새로운 하나를 추가 할 수 있도록 레이아웃을 것입니다.

+0

단지'll.invalidate()': http://developer.android.com/reference/android/view/View.html#invalidate() – Blacklight

+0

나는 그것을 시험해 보았지만 (아무 것도 선언하지 않았다.) 아무 것도 변하지 않았다. –

+0

선언문이 너무 일찍부터, 그것은 'TextView'를 추가 한 후에 마지막 호출이어야한다. 또한보기를 바꾸려면 추가하기 전에 이전보기를 제거해야합니다. http://developer.android.com/reference/android/view/ViewGroup.html#removeAllViews() – Blacklight

답변

0

시도 새로운 사람을 추가하기 전에 ll.removeAllViews()를 호출

당신은 아마 무엇이 필요
+0

이 방법이 작동하지만 제거됩니다. 스피너와 프로그래밍으로 추가 된 것뿐만 아니라 –

+0

나는 ll.removeAllViews()를 호출 한 후 스피너와 그 밖의 모든 것을 다시 추가했다. 고마워요. –

+0

아주 깨끗하지는 않습니다. 래퍼 (wrapper)가없는 TextView 대신'TextView'를 위해서만 또 다른'LinearLayout'을 사용하십시오. 그런 다음 해당 컨테이너 레이아웃에서만 작동하십시오. – Blacklight