Dynamiczne dodawanie TextView [Android Studio]

Odpowiedz Nowy wątek
2018-04-26 11:41
0

Witam wszystkich,

Posiadam pewną bazę danych, którą chciałbym zaprezentować użytkownikowi. Posiada ona 3 kolumny: id, nazwa, kod.
Próbuję napisać Activity, które wyświetli mi wyżej wspomnianą bazę danych w formie tabeli.

Pomyślałem, by użyć TableLayout, problem jednak pojawia się w dynamicznym dodawaniu do niego kolejnych kontrolek.
Poniżej wklejam kod layoutu oraz to co udało mi się "stworzyć" w klasie.

Efekt jest taki, a w zasadzie go brak - nie wyświetla mi nic.

<?xml version="1.0" encoding="utf-8"?>
 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/tableLayout"
    tools:context=".Show_AllData">
 
</TableLayout>
public class Show_AllData extends AppCompatActivity {
 
    private Cursor allData;
    private DatabaseHelper databaseHelper;
 
    private TableRow[] rows;
    private TextView[] textViews;
    private TableLayout tableLayout;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        tableLayout = findViewById(R.id.tableLayout);
 
        databaseHelper =  new DatabaseHelper(this);
        allData = databaseHelper.getAllData();
        allData.moveToFirst();
 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_show_all_data);
 
        rows = new TableRow[allData.getCount()];
        textViews = new TextView[allData.getCount()];
 
        do {
            String id = allData.getString(allData.getColumnIndex("product_id"));
            String eancode = allData.getString(allData.getColumnIndex("product_eancode"));
            String name = allData.getString(allData.getColumnIndex("product_name"));
 
            textViews[allData.getPosition()] = new TextView(this);
            textViews[allData.getPosition()].setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT,
                    TableLayout.LayoutParams.WRAP_CONTENT));
            rows[allData.getPosition()] = new TableRow(this);
 
            textViews[allData.getPosition()].setText(id + "\t" + eancode + "\t" + name);
            rows[allData.getPosition()].addView(textViews[allData.getPosition()]);
            this.tableLayout.addView(rows[allData.getPosition()]);
        } while(allData.moveToNext());
    }
}

Prosiłbym o wskazówkę lub jakąś pomoc, jak rozwiązać ten problem.

Pozdrawiam i z góry dziękuję :)

Pozostało 580 znaków

2018-04-26 20:04
pozdro
0

zaproponuje uzycie RecyclerView i ViewHolder ktory bedzie mial layout skladajacy sie z 3 widokow.

Pozostało 580 znaków

2018-05-15 11:31
0

Słuszny sposób jest taki:

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0