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