2011-12-04 8 views
0

動的にテーブルを作成しています。私は別のレイアウトファイルを使用して行を膨らませています。 しかし、これらの動的行のonclickイベントは、2回目以降にのみトリガされます。 助けてください。onclickは、動的に膨張した行の2回目の後にのみ起動されます。

private void populateRouteDetails(){ 

     TableRow row; 
     View[] lArray = new View[24]; 
     View lView = null; 
     LayoutParams lLayoutParams = new LayoutParams(
       LayoutParams.WRAP_CONTENT, 
       LayoutParams.WRAP_CONTENT); 

     for (int current = 0; current < 24; current++) { 
      row = new TableRow(this);     
      row.setPadding(0, 1, 0, 1); 
      LayoutInflater inflator = LayoutInflater.from(getBaseContext()); 
       // inflate child 
       View item = inflator.inflate(R.layout.linear_row, null); 
       lArray[current] = item;  
       item.setPadding(0, 15, 0, 15); 
       row.addView(item); 
       row.setGravity(Gravity.CENTER_HORIZONTAL); 
      busRoute.addView(row, lLayoutParams); 
      lView = new View(this); 
      lView.setBackgroundColor(0xFF00FF00); 
      busRoute.addView(lView, 
      new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, 1)); 
     } 
     for(int lCount = 0;lCount<lArray.length;lCount++){ 
      View lRow = lArray[lCount]; 
      lRow.setClickable(true); 
      lRow.setFocusable(true); 
      lRow.setFocusableInTouchMode(true); 

      lRow.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View pView) {     
        Toast.makeText(BusDetails.this, "Hello",Toast.LENGTH_SHORT).show(); 
       } 
      }); 
     }   
    } 

答えて

0

2度目の動作とはどういう意味ですか? 2番目のループを削除することができます。最初のループで「項目」にリスナーを追加します - ちょうど

item.setPadding(0, 15, 0, 15); 

後にビューが行に追加される前にリスナーを追加すると予想される結果を与えるかもしれません。

関連する問題