1

各linearlayoutを識別する方法が10個のLinearLayoutsにあるので、そのonclickをクリックすると、何らかのアクションを実行する必要があります。

以下はコードです

@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; 
        }
    } 
});
    }



    }

線形レイアウトのクリックイベントで、毎回同じオブジェクトが生成されます。どうすればお互いを区別できますか

4

2 に答える 2

1

すべてのlinearlayoutにIDを指定し、クリックするとレイアウトにgetidのケースを記述できます。

于 2012-09-03T10:42:55.217 に答える
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;
}

さらに、ビューごとに新しいOnClickListenerを作成するのではなく、アクティビティ内にOnClickListenerを実装するように設定できます。

ただし、forループで同じレイアウトを拡張するため、ビューのIDを変更せずにレイアウトを区別することはできません。したがって、電話をかけるview.setId(i)ことも役立つかもしれません。

代わりにListViewを使用して、アダプタのOnItemClickListenerを実装してみてください。

于 2012-09-03T10:41:13.867 に答える