2012-04-09 4 views
1

В моем файле макета - main.xml (линейный макет) есть 2 кнопки (скажем, b1 и b2), 1 listview и 1 относительный макет. Когда я нажимаю на b1, открывается список VISIBLE, а относительный макет сделан GONE. Когда я нажимаю на b2, listview сделан GONE, а относительный макет сделан VISIBLE. Вот код,

Переключение между макетами в android

b1.setOnClickListener(new OnClickListener(){ 
      public void onClick(View v) 
      { 
       try{ListView listView = (ListView) Home.this.findViewById(R.id.mylist); 
       listView.setTextFilterEnabled(true); 

       String[] values = new String[] { "Android", "iPhone", "WindowsMobile", 
        "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X", 
        "Linux", "OS/2" ,"asdsad","asdsdsa","asdasdsa"}; 
       ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, 
         R.layout.list_item,values); 

        // Assign adapter to ListView 
       RelativeLayout rl=(RelativeLayout) findViewById(R.id.rl1); 
       rl.setVisibility(8); 
        listView.setAdapter(adapter); 
        listView.setVisibility(0);} 
       catch(Exception e){Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show();} 
      } 

     });<br> 
b2.setOnClickListener(new OnClickListener(){ 
      public void onClick(View v) 
      { 
      try 
      { 

      ListView ls=(ListView) findViewById(R.id.mylist); 
      ls.setVisibility(8); 
      RelativeLayout rl=(RelativeLayout) findViewById(R.id.rl1); 
      getLayoutInflater().inflate(R.layout.creategroup,rl,true); 
      rl.setVisibility(0); 


      EditText username=(EditText) findViewById(R.id.group_owner_fill); 
      username.setText(userid); 
      username.setEnabled(false); 
      username.setFocusable(false); 
      boolean t=username.isEnabled(); 
      String s=new Boolean(t).toString(); 
      Toast.makeText(getApplicationContext(), s, Toast.LENGTH_LONG).show(); 



      } 
      catch(Exception e) 
      { 
       Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show(); 
      } 
      } 

     }); 



Первый раз, когда я нажимаю b2, то EditText (имя пользователя) заблокирован (т.е. setenabled и setfocussable сделаны ложные). Но когда я нажимаю b1, а затем нажимаю b2, Edittext не заблокирован, а setText - нет. Какая может быть причина?

ответ

3

Вместо того, чтобы устанавливать видимость, я предлагаю вам реализовать ViewFlipper. Поскольку ViewFlipper позволяет нам отображать представления всякий раз, когда пользователь хочет.

<ViewFlipper 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/flip"> 

    <ListView /> 
     <RelativeLayout> 
     ............. 
     ............. 
     .............   
     </RelativeLayout> 

</ViewFlipper> 

В коде вы можете перевернуть представление с помощью метода setDisplayedChild(). FYI, RelativeLayout является ребенком 1. поэтому вам нужно записать flipper.setDisplayedChild(1)

+0

Теперь это имеет смысл .. :-) – user370305

+0

@ user370305 да, я знаю, на самом деле я создавал пример кода макета внутри редактора кода eclipse :) –

+0

@PareshMayani: Suraj попросил возможную причину выхода, который он получает. – Ashwin

Смежные вопросы