J'ai un TableLayout
pour lequel j'ai ajouté des lignes dynamiquement. Dans chaque rangée, il y a 2 éléments dont l'un est TextView
l'autre est Button
. Lorsque je clique sur le bouton qui est présent dans une ligne, cette ligne doit être supprimée. Comment cela peut-il être fait dans Android ? Comment trouver le numéro de rangée et comment supprimer une rangée dynamiquement ? Quelqu'un peut-il m'aider à résoudre ce problème ?
Réponses
Trop de publicités?OnClick sur le bouton vous donnera la vue cliquée, le bouton dans votre cas. Le parent de ce bouton est la ligne que vous voulez supprimer. En supprimant cette ligne de son parent, vous vous en débarrasserez.
Un exemple de la façon dont vous pourriez mettre en œuvre cette mesure :
button.setOnClickListener(new OnClickListener()
{
@Override public void onClick(View v)
{
// row is your row, the parent of the clicked button
View row = (View) v.getParent();
// container contains all the rows, you could keep a variable somewhere else to the container which you can refer to here
ViewGroup container = ((ViewGroup)row.getParent());
// delete the row and invalidate your view so it gets redrawn
container.removeView(row);
container.invalidate();
}
});
Vous devez assigner un ID pour ajouter dynamiquement des lignes et avec l'utilisation de cela vous pouvez obtenir les valeurs de cette ligne particulière ou vous pouvez également supprimer la ligne que vous cliquez sur le bouton de ligne.
Dans onCreate():-
addButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mTable.addView(addRow(mInput.getText().toString()));
}
});
private TableRow addRow(String s) {
TableRow tr = new TableRow(this);
tr.setId(1000 + sCount);
tr.setLayoutParams(new TableLayout.LayoutParams(
TableLayout.LayoutParams.FILL_PARENT,
TableLayout.LayoutParams.WRAP_CONTENT));
TableRow.LayoutParams tlparams = new TableRow.LayoutParams(
TableRow.LayoutParams.WRAP_CONTENT,
TableRow.LayoutParams.WRAP_CONTENT);
TextView textView = new TextView(this);
textView.setLayoutParams(tlparams);
textView.setText("New text: " + s);
tr.addView(textView);
TableRow.LayoutParams blparams = new TableRow.LayoutParams(
TableRow.LayoutParams.WRAP_CONTENT,
TableRow.LayoutParams.WRAP_CONTENT);
final Button button = new Button(this);
button.setLayoutParams(blparams);
button.setText(" - ");
button.setId(2000 + sCount);
button.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
mTable.removeView(findViewById(v.getId() - 1000));
}
});
tr.addView(button);
sCount++;
return tr;
}
TableLayout:-
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:id="@+id/parent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/add"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TableLayout
android:id="@+id/table1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</TableLayout>
</LinearLayout>
</ScrollView>