2013-04-19 1 views
0
final ImageView patientAllergyImage = (ImageView) findViewById(R.id.image); 
patientAllergyImage.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     patientAllergyImage.setImageDrawable(getResources(). 
       getDrawable(R.drawable.nav_down_green)); 
     List.setVisibility(View.GONE); 
    } 
}); 

Я делаю свой список для скрытия, но как его показать, когда я нажимаю на ту же кнопку. Я не в состоянии держать логическое значение, чтобы проверить, является ли его кликой или нет, как он говорил ... The final local variable clicked cannot be assigned, since it is defined in an enclosing type ни nonfinal переменнаяпоказать/скрыть списокView на кнопкеClick

ответ

7

Попробуйте это,

 public void onClick(View V){ 
     patientAllergyImage.setImageDrawable(getResources(). 
       getDrawable(R.drawable.nav_down_green)); 
     List.setVisibility(List.isShown() ? View.GONE : View.VISIBLE); 
    } 
3

Вместо типичной кнопки, вы можете использовать toogle Button для достижения этой

ToggleButton toggle = (ToggleButton) findViewById(R.id.togglebutton); 
toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
     if (isChecked) { 
      // hide the listview 
     } else { 
      // show the listview 
     } 
    } 
}); 
1

Удалить final для булевой переменной или попробовать этот

попробовать этот

 if(List.getVisibility()==View.GONE) 
     { 
      List.setVisibility(View.VISIBLE); 
     } 
     if(List.getVisibility()==View.VISIBLE) 
     { 
      List.setVisibility(View.GONE); 
     } 
2

Попробуйте что-то вроде этого:

public void onClick(View v) { 
     // TODO Auto-generated method stub 
     patientAllergyImage.setImageDrawable(getResources(). 
      getDrawable(R.drawable.nav_down_green)); 

     if(List.getVisibility()==View.VISIBLE){ 
      List.setVisibility(View.INVISIBLE) 
     }else{ 
      List.setVisibility(View.VISIBLE) 
     } 
    } 

Заменить невидим GONE при необходимости. Надеюсь, это помогло.

1

Кажется, что есть несколько вопросов здесь.

Прежде всего, вы не должны называть свой список «Список», это маскирует реальный класс, называемый List.

  1. Лучше всего использовать «listView» с строчными буквами «l», если вы застряли за достойным именем переменной.

  2. Вам не нужно использовать конечный везде.

  3. Используйте setImageResource вместо того, чтобы держать код чистым и читаемым.

  4. Используйте истинный?: Ложный синтаксис, когда читаем

    ImageView patientAllergyImage = (ImageView) findViewById(R.id.image); 
    patientAllergyImage.setOnClickListener(new OnClickListener() { 
    
        @Override 
        public void onClick(View v) { 
    
        //see if the list view is visible 
        bool bVisible = listView.getVisibility(); 
    
        //select the image resource 
        int iImageRes = bVisible?R.drawable.nav_down_green:R.drawable.nav_up_green; 
    
        //Toggle Image 
        (ImageView)v.setImageResource(iImageRes); 
    
        //Toggle List Visibility 
        listView.setVisibility(bVisible?View.GONE:View.VISIBLE); 
    
        } 
    
    });