如何在Activity中获取非绑定的其他布局的控件

通常来说,,一个Activity对应一个布局文件,可以通过setContentView()来设置绑定的布局。

通过setContentView给Activity换布局,不过一般不建议这么用,如果想要替换不同界面的话,可以用Activity管理几个Fragment来实现,或者可以动态的给layout文件中的Viewgroup添加View。

今天来说一下如何获取非本activity绑定的布局控件:

在Activity中,我们一般使用用findViewById(R.id.控件id)的方法获取控件。

PS:这种方法只适用于获取setContentView(R.layout.布局名)中对应布局上的控件。如果使用findViewById(R.id.控件id)的方式获取其他布局的控件则会报错

运行时异常:

空指针异常:

 所以,我们可以用view类来获取其他布局的控件

view是所有交互式组件的基类。

view类继承至 Object 实现了 Drawable.Callback KeyEvent.Callback AccessibilityEventSource接口。

直接子类有:AnalogClock, ImageView, KeyboardView, MediaRouteButton, ProgressBar, Space, SurfaceView, TextView, TextureView, ViewGroup, ViewStub

间接子类无数:AbsListView, AbsSeekBar, AbsSpinner, AbsoluteLayout, ActionMenuView, AdapterView<T extends Adapter>, AdapterViewAnimator, AdapterViewFlipper...

借鉴自:Android的一些认识

 具体方法:

View view = View.inflate(MainActivity.this, R.layout.布局名, null);
//inflate:视图填充器;这个为内部类,要使用上下文则为  类.this
TextView textview = (TextView) view.findViewById(R.id.控件id);
//一定要在view对象中绑定控件的id

这样就可以获取非本Activity绑定布局的控件了。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Activity点击件动态更新RecyclerView的布局件的显示隐藏,可以在件的点击事件更新数据源,并调用RecyclerView的Adapter的notifyDataSetChanged()方法通知RecyclerView进行更新。具体步骤如下: 1. 在Activity义RecyclerView和Adapter,并将Adapter与RecyclerView进行。 2. 在件的点击事件更新数据源需要更新的字段,并调用Adapter的notifyDataSetChanged()方法进行更新。 例如,如果需要在点击Button时更新RecyclerView的某个件的显示隐藏,可以在Button的点击事件更新数据源的isShow字段,然后调用Adapter的notifyDataSetChanged()方法进行更新。示例代码如下: ``` public class MainActivity extends AppCompatActivity { private RecyclerView mRecyclerView; private MyAdapter mAdapter; private List<Item> mData; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化RecyclerView和Adapter mRecyclerView = findViewById(R.id.recyclerView); mData = new ArrayList<>(); mAdapter = new MyAdapter(mData); mRecyclerView.setAdapter(mAdapter); // 设置Button的点击事件 Button btn = findViewById(R.id.btn); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 更新数据源的isShow字段 mData.get(0).isShow = !mData.get(0).isShow; // 调用Adapter的notifyDataSetChanged()方法进行更新 mAdapter.notifyDataSetChanged(); } }); } } ``` 在上面的代码,MainActivity义了RecyclerView和Adapter,并将Adapter与RecyclerView进行了。在Button的点击事件更新数据源的isShow字段,并调用Adapter的notifyDataSetChanged()方法进行更新。这样就可以动态更新RecyclerView的布局件的显示隐藏了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值