Java for android – Instanceof

来源:互联网 发布:成都华育国际网络推广 编辑:程序博客网 时间:2024/05/17 06:30

今晚写了些Java For Android Demo ,也有几日没写了,却越发生疏了。在开发时,不免有些类型比较区分,java有个关键字是极好的了,Instanceof  比较类型是否相同 , android中所有UI组件皆继承自View类,我们可以得到界面根Layout,而一般布局对象皆是继承自ViewGroup,可以使用如下方法得到其容器下的子视图 ,int getChildCount()获取到其子视图的个数,getChildAt(int index)则是取得子视图的对象,然后获取各个UI组件,接着根据各组件类型的不同,分别作出不同的效果 , 可也是甚好的了。如下Java Code




package com.zy.javaforandroid;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
/**
 * java for android
 * 
 * @author byxiaozhu <byxiaozhu@126.com>
 *  
 * java instanceof 类型验证
 */
public class InstanceOfActivity extends ActionBarActivity
{
private static final String TAG = "byxiaozhu";
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// 得到布局对象 , 并获取到布局对象中所有子对象的总数
LinearLayout layoutRoot = (LinearLayout) this.getLayoutInflater()
.inflate(R.layout.activity_instance, null);
setContentView(layoutRoot);
int childCount = layoutRoot.getChildCount();
Log.i(TAG, "childCount = " + childCount);
Log.i(TAG, layoutRoot.toString());
if (childCount > 0)
{
/**
* 遍历布局对象中的组件,并验证类型匹配
*/
for (int i = 0; i < childCount; i++)
{
final View childView = layoutRoot.getChildAt(i);
Log.i(TAG, childView.toString());
if (childView instanceof Button)
{
childView.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
Toast.makeText(InstanceOfActivity.this,
"点击的是Button按钮", Toast.LENGTH_SHORT).show();
Log.i(TAG, childView.toString());
}
});
} else if (childView instanceof TextView)
{
childView.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
Toast.makeText(InstanceOfActivity.this,
"点击的是TextView文本", Toast.LENGTH_SHORT)
.show();
}
});
}
}
}
}
}
0 0