我有一个应用程序,它显示包含详细信息的项目列表。当用户选择该项目时,应用程序会显示额外的详细信息。我创建了两个扩展 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/