2012-10-19 5 views
0

테이블에 TableRows를 동적으로 생성 한 커플이 있습니다 ... 각 행에 3 개의 Textview와 이미지 버튼이있어 사용자가 원하는 경우 행을 삭제할 수 있습니다. 행을 성공적으로 생성했습니다 달성되었지만 사용자가 해당 행에서 삭제 버튼을 클릭하면 문제가 발생합니다. 행이 예상대로 삭제되지 않습니다. 어떻게해야합니까?안드로이드 테이블에서 동적으로 생성 된 TableRow를 제거합니다

내 코드

 public void addBody(String Code,String Type,String Quantity){ 
    /** Create a TableRow dynamically **/ 
    mTblrow = new TableRow(this); 

    /** Creating a TextView to add to the row **/ 
    TextView label = new TextView(this); 
    label.setText(Code); 
    label.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));   
    label.setPadding(5, 5, 5, 5); 
    label.setBackgroundColor(Color.GRAY); 

    LinearLayout Ll = new LinearLayout(this); 
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);  
    params.setMargins(5, 5, 5, 5); 

    Ll.addView(label,params); 
    mTblrow.addView((View)Ll); // Adding textView to tablerow. 

    /** Creating Qty Button **/ 
    TextView type = new TextView(this); 
    type.setText(Type); 
    type.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
    type.setPadding(5, 5, 5, 5); 
    type.setBackgroundColor(Color.GRAY); 

    Ll = new LinearLayout(this); 
    params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, 
      LayoutParams.WRAP_CONTENT); 
    params.setMargins(0, 5, 5, 5); 
    Ll.addView(type,params); 
    mTblrow.addView((View)Ll); // Adding textview to tablerow. 

    /** Creating Qty Button **/ 
    TextView quantity = new TextView(this); 
    quantity.setText(Quantity); 
    quantity.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
    quantity.setPadding(5, 5, 5, 5); 
    quantity.setBackgroundColor(Color.GRAY); 

    Ll = new LinearLayout(this); 
    params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT); 

    params.setMargins(0, 5, 5, 5); 
    Ll.addView(quantity,params); 
    mTblrow.addView((View)Ll); 
    /** Creating Qty Button **/ 
    ImageView delete = new ImageView(this); 
    delete.setImageDrawable(drawable); 
    delete.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
    delete.setPadding(5, 5, 5, 5); 

    Ll = new LinearLayout(this); 
    params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT); 

    params.setMargins(0, 5, 5, 5); 
    Ll.addView(delete,params); 
    mTblrow.addView((View)Ll); 


    // Add the TableRow to the TableLayout 

    delete.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      //This part should handle the logic to delete the row 
      //This is where am hitting a snag..Please Help 
      mTable.removeView(mTblrow); 


     } 
    }); 
    mTable.addView(mTblrow, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));    

} 

EDIT 다음과 같습니다 내가 클릭에 대한 아래의 코드를 사용하여 시도 대신

delete.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      ((ViewManager)mTblrow.getParent()).removeView(mTblrow); 

      mTable.removeViewAt(rowIndex);   

     } 
    }); 

그것 그러나대로 작동하지 않는 그것은에서 행을 삭제하는 것을 원하는 위에서 아래에서 시작하여 항상 위에서 아래로 시작합니다.

+1

오류를 받으셨습니까? 또는 행이 삭제되지 않고 있습니까? –

+0

오류가 없습니다. 단순히 삭제되지 않았습니다. 단순히 표에서 행을 삭제하고 싶습니다. –

답변

0

삭제 계층 구조를 보면 삭제 코드가 표시됩니다. 수 ULD : 나는 또한 당신처럼 다른 쓸모없는 LinearLayoutTableRow에 추가하는 각보기를 포장하지 않도록 조언을 것

delete.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      mTable.removeViewAt(((View) ((View) v.getParent()).getParent()));   
     } 
}); 

.

관련 문제