在按钮上显示/隐藏listView单击

时间:2013-04-19 14:32:12

标签: android listview buttonclick

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既不是non final变量

5 个答案:

答案 0 :(得分:8)

试试这个,

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

答案 1 :(得分: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
        }
    }
});

答案 2 :(得分: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替换INVISIBLE。希望这有帮助。

答案 3 :(得分:1)

删除final以获取布尔变量或 试试这个

试试这个

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

答案 4 :(得分:1)

这里似乎有一些问题。

首先,你不应该调用listview“List”,这是掩盖名为List的真实类。

  1. 如果您遇到一个不错的变量名称,最好使用带有小写“l”的“listView”。

  2. 您无需在任何地方使用决赛。

  3. 使用setImageResource来保持代码的清晰和可读性。

  4. 可读时使用?true:false语法

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