android - 如何高效地添加/删除 View ?

标签 android view addition removechild

我有一个应用程序,它显示包含详细信息的项目列表。当用户选择该项目时,应用程序会显示额外的详细信息。我创建了两个扩展 RelativeLayout 的 View ,一个用于 listView,另一个用于详细 View ,并将两者添加到同一父布局中。这是我的 xml 和 View 的示例代码。

使用ListView查看

class MyView1 extends RelativeLayout {

        private Context context = null;

        public MyView1 (Context context) {
            super(context);
            this.context = context;
            createView();
        }

        private void createView() {

            LayoutInflater layoutInflater = (LayoutInflater) context
                    .getSystemService(Service.LAYOUT_INFLATER_SERVICE);
            View view = layoutInflater.inflate(R.layout.layout1, null);
            this.addView(view );
            listview = (ListView) findViewById(R.id.listView);
            listview.setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> parent, View view, int position,
                    long id) {
                Object obj  = list.get(position);
                MyView1.this.removeAllViews();
                MyView1.this.addView(new MyView2(context));
            }
        });
         //Set Adapter
        }

    }

查看详情

class MyView2 extends RelativeLayout {

    private Context context = null;

    public MyView2(Context context) {
        super(context);
        this.context = context;
        createView();
    }


    private void createView() {

        LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Service.LAYOUT_INFLATER_SERVICE);
        View view = layoutInflater.inflate(R.layout.layout2s, null);
        this.addView(view );

        backbutton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                MyView2 .this.removeAllViews();
                MyView2 .this.addView(new MyView1(context));
            }
        });
    }
}

我将这两个 View 添加到框架布局中。我的问题是,当添加/删除这样的 View 时,会减慢应用程序的速度。如何更有效地添加和删除它们?

最佳答案

添加

这条线效率不高

View view = layoutInflater.inflate(R.layout.layout1, null);
为什么?看看这个article

删除

这条线效率不高

MyView1.this.removeAllViews();
为什么?此方法将循环所有 subview 并删除它们。如果您知道要删除哪个 View 对象,可以使用removeView(View v)函数。这样效率会更高。

关于android - 如何高效地添加/删除 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14477912/

相关文章:

android - 顺畅的飞行运动,如飞扬的小鸟或喷气背包,通过重力和加速度享受欢乐之旅

c# - View 和 Entity Framework 数据不对?

使用 CTE 创建的 Hadoop View 行为不当

iOS UILabel 旋转问题

c - C 中数组元素加 1

android - 如何在 ListView 中拥有高级列表项

java - 无法在 Android 上将字符串转换为日期

android - 我如何在 Android 中实现 ZigBee?

algorithm - 以 n 为底数相加

flutter - 在 FAB 上添加表格小部件单击 FLUTTER