我有10个LinearLayouts如何识别每个线性布局,以便点击我需要对其执行某些操作
以下是代码
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.item);
newsLayout =(LinearLayout)findViewById(R.id.newsLayout);
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
RelativeLayout rel=null;
for(int i=0;i<images.size();i++){
rel= new RelativeLayout(this);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
rel.setId(i);
rel = (RelativeLayout) inflater.inflate(R.layout.reuse,null);
params.setMargins(0, 50, 0, 0);
TextView fromWeb= (TextView) rel.findViewById(R.id.text);
fromWeb.setText(headLines.get(i));
newsLayout.addView(rel,params);
rel.setOnClickListener(new RelativeLayout.OnClickListener() {
public void onClick(View arg0) {
switch(arg0.getId()) {
case 1: Toast.makeText(DesignShape.this, "clicked"+arg0.getId(), Toast.LENGTH_LONG).show();
break;
default: break;
}
}
});
}
}
在线性布局上的点击事件中,每次都会产生相同的对象。我怎么能彼此distinguih
答案 0 :(得分:1)
您可以将ID提供给每个线性布局,并在点击布局中将案例写入getid。
答案 1 :(得分:0)
您可以使用如下所示的开关案例来识别您的布局:
public void onClick(View arg0) {
switch(arg0.getId()):
case R.id.layout1:
Toast.makeText(DesignShape.this, "clicked"+arg0.getId(), Toast.LENGTH_LONG).show();
break;
default:
break;
}
此外,您可以在Activity中设置OnClickListener,而不是为每个视图创建一个新的。
但是,由于您在for循环中为相同的布局充气,因此无法在不修改视图ID的情况下区分布局。所以调用view.setId(i)
也可能有所帮助。
尝试使用ListView代替并实施适配器的OnItemClickListener。