View.setVisibility()无效的启示

今天用setVisibility遇到了问题,就是getVisibility有效,可以返回值,而setVisibility无效,因而无法动态控制view的显示,初始代码是这样的(在adpter适配器里边):

 ViewGroup activity_main = (ViewGroup)mInflater.inflate(R.layout.activity_main, null);

 LinearLayout operateLayout = (LinearLayout)activity_main.findViewById(R.id.id_button_list);

 Button rename = (Button)activity_main.findViewById(R.id.rename);

		    

		    if (rename.getVisibility() == View.GONE) {

				Log.d("test1",String.valueOf(rename.getVisibility()));

				rename.setVisibility(View.VISIBLE);

			}

		    else {

				rename.setVisibility(View.GONE);

				Log.d("test2",String.valueOf(rename.getVisibility()));

			}

  后来百思不得其解,干脆在mainactivity中实验正常,怀疑是不是布局的加载方式问题,后来在adapter中直接用mContext来findview:

Button rename = (Button)((MainActivity)mContext).findViewById(R.id.rename);

  于是乎就可以了,感觉应该是inflater的问题,是不是一个BUG呢?有大神知道么?

      后记:也可能是这句话出了毛病。因为要提供一个不是parent的parent来作为布局参数给android参考,要不就会出错,使用后一种方式加载恰恰避免了这个考量。

ViewGroup activity_main = (ViewGroup)mInflater.inflate(R.layout.activity_main, null);

你可能感兴趣的:(visibility)