0
클릭 한 내용을 기반으로 TableRayout에서 TableRayout을 제거하려고합니다. 이 테이블 레이아웃은 SQLiteDatabase에서 채워집니다. 클릭 한 행의 ID를 설정하고 클릭 한 행을 삭제하려고했습니다. 그것은 한 번만, 더 많은 행을 삭제하려면 두 번째 제거 버튼을 클릭하면, 응용 프로그램이 중지되었습니다 근무하고 있습니다.- TableLayout에서 클릭 한 TableRow를 제거하는 방법
ID가 2 인 두 번째 행을 제거하면 ID가 3 인 세 번째 행이 두 번째 행이 삭제 될 때 행 ID가 2가되므로이 문제가 발생했다고 생각했습니다. TableLayout에서 선택한 행을 어떻게 제거 할 수 있습니까?
이
는 행을 삭제하는 내 방법입니다 :btnRemove.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try {
int rowIDs = tampRowID;
int SOUDetailNo = tampRowID + LastSOUDetail;
mytable.removeViewAt(tampRowID);
b.deleteSOUD(SOUDetailNo);
Toast.makeText(Order.this, "SOUploadDetail no "+ Integer.toString(SOUDetailNo) + " has been deleted", Toast.LENGTH_SHORT).show();
} catch (NumberFormatException e) {
// TODO: handle exception
Toast.makeText(Order.this, "could not parse", Toast.LENGTH_SHORT).show();
}
}
});
}
그리고 나는 BuildTable() 메소드의 행 ID를 설정 : 다음과 같은 대답에 시도 할 수 있습니다
private void BuildTable()
{
int rowID = 0;
Cursor c = b.readAllSOUD();
final int rows = c.getCount();
int cols = c.getColumnCount();
c.moveToPosition(c.getCount() - 1);
// outer for loop
final TableRow row = new TableRow(this);
row.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
row.setClickable(true);
rowID++;
row.setId(rowID);
row.setBackgroundColor(Color.WHITE);
row.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
tampRowID = row.getId();
}
});
// inner for loop
for (int j = 0; j < cols; j++)
{
TextView tv = new TextView(this);
tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
//tv.setBackgroundResource(R.drawable.cell_shape);
tv.setGravity(Gravity.LEFT);
tv.setTextSize(12);
tv.setPadding(0, 5, 0, 5);
tv.setText(c.getString(j));
//tv.setBackgroundColor(0x7C5B77);
row.addView(tv);
}
c.moveToNext();
mytable.addView(row);
}
네, 약간의 의상과 함께 저도 잘합니다. 미리 감사드립니다 !! – Nes
sory, 내 평판은 ur 대답을 upvote 충분하지 않습니다. – Nes