Android Overiding onFinishInflate()方法
我正在使用Android Overiding onFinishInflate()方法,android,layout-inflater,Android,Layout Inflater,我正在使用LayoutInflater对xml进行膨胀,因为我需要多次(动态)查看此视图 我的创建方法如下: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.home); v[i]= new View[4];
LayoutInflater
对xml进行膨胀,因为我需要多次(动态)查看此视图
我的创建方法如下:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
v[i]= new View[4];
LinearLayout linear= (LinearLayout) findViewById(R.id.linearLayout);
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
for(int i = 1; i <4; i++) {
v[i]= inflater.inflate(R.layout.row, linear); //v[i] returns view i.e. Linear Layout from my row.xml
}
}
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
v[i]=新视图[4];
LinearLayout linear=(LinearLayout)findViewById(R.id.LinearLayout);
LayoutFlater充气器=(LayoutFlater)getSystemService(Context.LAYOUT\u充气器\u服务);
对于(int i=1;i您不需要onFinishInflate()
。调用inflate()
返回新创建的视图。只需在视图上逐个使用带有按钮ID的findViewById()
,并在每个按钮上设置OnClickListener。您不需要onFinishInflate()
。调用inflate()
返回新创建的视图。只需使用findViewById()
在视图上逐个显示按钮ID,并在每个按钮上设置OnClickListener。据我所知,您的布局R.layout.row
包含按钮
,您希望将OnClickListeners
添加到这些按钮
。您无需重写任何方法即可完成此操作。充气()LayoutInflater
的返回刚刚充气的视图的实例。然后可以使用findViewById()
获取布局中的按钮。尝试以下操作:
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.row, linear);
Button buttonOne = (Button) v.findViewById(R.id.buttonOne);
button.setOnClickListener(new View.OnClickListener()...
public void ButtonClickFunction(View v) {
<Your code here>
}
据我所知,您的布局R.layout.row
包含按钮
,您希望将OnClickListeners
添加到这些按钮
。您不需要重写任何方法即可。方法充气()LayoutInflater
的返回刚刚充气的视图的实例。然后可以使用findViewById()
获取布局中的按钮。尝试以下操作:
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.row, linear);
Button buttonOne = (Button) v.findViewById(R.id.buttonOne);
button.setOnClickListener(new View.OnClickListener()...
public void ButtonClickFunction(View v) {
<Your code here>
}
准确回答您的问题,即:
那么,如何以及在何处重写此方法
答案在视图或视图组子类中
但是,很明显,您正在询问如何为“行”布局中的按钮应用侦听器,该布局在LinearLayout中是“重复”的。没有必要为了实现这一点而重写此方法,但需要清除一些内容以获得更好的答案。例如,“行”中有多少按钮布局?您希望每行中的每个按钮都做相同的事情(调用相同的函数)还是按钮的功能必须不同,比如说,它们位于哪一行
我会给你一个关于如何做的总体想法,但这完全是基于我的想法,如果你需要一个更好的答案,你应该编辑你的问题,并提供更多的细节,比如你的xml文件以及你到底想做什么
现在是代码
在“行”xml布局中,在按钮元素内提供以下属性:
android:onClick="ButtonClickFunction"
然后在活动中声明如下函数:
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.row, linear);
Button buttonOne = (Button) v.findViewById(R.id.buttonOne);
button.setOnClickListener(new View.OnClickListener()...
public void ButtonClickFunction(View v) {
<Your code here>
}
public void按钮链接功能(视图五){
}
现在,无论何时单击此按钮(在任何行中),ButtonClickFunction都将以按钮作为参数调用。但是,如果您希望根据行号执行不同的操作,这可能不是最佳方法
当然,你可以随意更改“ButtonClickFunction”的名称。你可以阅读更多关于我的建议和建议
希望这有助于…准确回答您的问题,即:
那么,如何以及在何处重写此方法
答案在视图或视图组子类中
但是,很明显,您正在询问如何为“行”布局中的按钮应用侦听器,该布局在LinearLayout中是“重复”的。没有必要为了实现这一点而重写此方法,但需要清除一些内容以获得更好的答案。例如,“行”中有多少按钮布局?您希望每行中的每个按钮都做相同的事情(调用相同的函数)还是按钮的功能必须不同,比如说,它们位于哪一行
我会给你一个关于如何做的总体想法,但这完全是基于我的想法,如果你需要一个更好的答案,你应该编辑你的问题,并提供更多的细节,比如你的xml文件以及你到底想做什么
现在是代码
在“行”xml布局中,在按钮元素内提供以下属性:
android:onClick="ButtonClickFunction"
然后在活动中声明如下函数:
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.row, linear);
Button buttonOne = (Button) v.findViewById(R.id.buttonOne);
button.setOnClickListener(new View.OnClickListener()...
public void ButtonClickFunction(View v) {
<Your code here>
}
public void按钮链接功能(视图五){
}
现在,无论何时单击此按钮(在任何行中),ButtonClickFunction都将以按钮作为参数调用。但是,如果您希望根据行号执行不同的操作,这可能不是最佳方法
当然,你可以随意更改“ButtonClickFunction”的名称。你可以阅读更多关于我的建议和建议
希望这有助于…据我所知,让一排人充气的最佳方法如下-
View v[i] = inflater.inflate(R.layout.row, null);
linear.addView(v[i]);
这个v返回row.xml中的膨胀视图。因此,我们可以按如下方式访问按钮
photoButton[i]=(Button) v[i].findViewById(R.id.button1inInflatedRow);
我错在哪里---
我在用
View v[i] = inflater.inflate(R.layout.row, linear);
这个V[i]是父布局,因此我无法通过它访问按钮
(按钮)v[i].findViewById(R.id.button1inInflatedRow)
对一行进行充气的最佳方法(据我所知)如下-
View v[i] = inflater.inflate(R.layout.row, null);
linear.addView(v[i]);
这个v返回row.xml中的膨胀视图。因此,我们可以按如下方式访问按钮
photoButton[i]=(Button) v[i].findViewById(R.id.button1inInflatedRow);
我错在哪里---
我在用
View v[i] = inflater.inflate(R.layout.row, linear);
这个V[i]是父布局,因此我无法通过它访问按钮
(按钮)v[i].findViewById(R.id.button1inInflatedRow)
我想为按钮设置Onclicklistener。-在充气布局后,在新充气的布局中找到W按钮并分配侦听器。我知道侦听器必须在视图中。OnFinishInfla