android - 如何以编程方式刷新线性布局

标签 android android-linearlayout

我的应用程序有一个 LinearLayoutLinearLayout 由 3 个 Linearlayout 组成,每个线性布局都有一个 Relativelayout 和一个线性布局(最初这些线性布局的可见性消失了)。如果单击相对布局,则会显示相关的线性布局。但是如何在点击相对布局后刷新整个线性布局。

代码:

private OnClickListener exit2Listener = new OnClickListener()
{
    public void onClick(View v)
    {
       if(!exit2status)
       {
          if(RB_Constant.upcomingexits_obj.response.size() > 1)
          {
             if(RB_Constant.upcomingexits_obj.response.get(1).listRestaurants.size() > 0)
             {
                 // Create the views on the fly instead of using the ListView
                 UpcomingResultsListViewAdapter2 rbupcadapter2 = new UpcomingResultsListViewAdapter2(RB_UpcomingExits.this);
                 int numItems2 = 0;

                 if(RB_Constant.upcomingexits_obj.response.get(1).listRestaurants.size() > 0)
                 {
                    numItems2 = RB_Constant.upcomingexits_obj.response.get(1).listRestaurants.size();
                 }

                 //linearLayout2
                 for(int position=0; position < numItems2; position++)
                 {
                    View convertview = null;
                    convertview = rbupcadapter2.getView(position, convertview, null);
                    listLayout2.addView(convertview);
                 }
             }              
          }
          else
          {
             //toastMsg("No results!");
          }
          listLayout2.setVisibility(View.VISIBLE);
          exit2status=true;

          if(!exit1status || exit3status || exit4status || exit5status)
          {
             //System.out.println("exit2 GONE");
             listLayout1.setVisibility(View.GONE);
             listLayout3.setVisibility(View.GONE);
             exit1status = false;
             exit3status = false;

          }

          LLExitDetails.invalidate();
       }
       else
       {
          System.out.println("exit2 GONE");
          listLayout2.setVisibility(View.GONE);
          exit2status = false;

          LLExitDetails.invalidate();
       }
    }       
};

最佳答案

检索包含所有内容的 LinearLayout。当你需要“刷新”它时,调用invalidate。不过只能在 UI 线程中调用它。如果您在另一个线程(比如计时器)中调用它,则调用 postInvalidate。当操作系统准备调用它时,两者都会导致调用 View 的 onDraw 方法。

关于android - 如何以编程方式刷新线性布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6596494/

相关文章:

android - 动态背景(在 LinearLayout 上)- 我的错误是什么?

安卓工作室 : execution failed for task : app:compileDebugAidl FAILED

java - 我如何从 json 获取数据到微调器?

android - 将顶部 imageView 与 relativeLayout 的中心对齐

android - 当我回到 fragment 时,立即调用观察者

android - 关于扩展 LinearLayout

java - 如何在android studio中使用gradle访问依赖项的依赖项?

android - 如何在 Imageview 的顶部或底部添加 ad-mob(广告横幅)?

android-layout - Android:动态添加 TextView 到 ScrollView

Android:如何将 LinearLayout 分成不等的部分?