Добавить изображение и текст в TableRow программно - PullRequest
0 голосов
/ 21 октября 2019

Я написал код, который должен динамически добавлять TableRow в TableLayout. В свою очередь, каждая строка содержит изображение и текст под ним. (Пример на картинке) enter image description here

Когда я запускаю свое приложение, по какой-то причине отображается только TextView, изображение, которое я не вижу.

В чем может быть проблема?

Вот мой код:

tableLayout = findViewById(R.id.tablet_layout_item);

for (int i = 0; i < itemList.size(); i++) {
        final float scale = getResources().getDisplayMetrics().density;
        int dpWidthInPx  = (int) (18 * scale);
        int dpHeightInPx = (int) (250 * scale);

        TableRow tableRow_title = new TableRow(mContext);
        TableRow.LayoutParams params_text = new TableRow.LayoutParams();
        params_text.setMargins(dpWidthInPx, dpWidthInPx, dpWidthInPx, dpWidthInPx);
        TextView textView_title = new TextView(mContext);
        textView_title.setText(itemList.get(i).getName());
        textView_title.setTextSize(TypedValue.COMPLEX_UNIT_SP,18);
        textView_title.setLayoutParams(params_text);
        tableRow_title.addView(textView_title);
        tableLayout.addView(tableRow_title);

        for (int j = 0; j < itemList.get(i).getItemPageList().size(); j++)
        {
            String title = itemList.get(i).getItemPageList().get(j).getTitle();
            String text = itemList.get(i).getItemPageList().get(j).getText();
            Bitmap bitmap = itemList.get(i).getItemPageList().get(j).getImage();

            TableRow tableRow_page = new TableRow(mContext);
            TableRow.LayoutParams params_page = new TableRow.LayoutParams();
            params_page.setMargins(dpWidthInPx, dpWidthInPx, dpWidthInPx, dpWidthInPx);

            /**LinearLayout**/
            LinearLayout linearLayout_page = new LinearLayout(mContext);
            LinearLayout.LayoutParams paramsLinearLayout_page = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
            linearLayout_page.setLayoutParams(params_page);
            linearLayout_page.setOrientation(LinearLayout.VERTICAL);
            tableRow_page.addView(linearLayout_page);

            /**Image**/
            ImageView imageView_page = new ImageView(mContext);
            imageView_page.setBackground(new BitmapDrawable(getResources(), bitmap));
            imageView_page.setLayoutParams(paramsLinearLayout_page);

            /**Text**/
            TextView textView_page = new TextView(mContext);
            textView_page.setText(title);
            textView_page.setTextSize(TypedValue.COMPLEX_UNIT_SP,16);
            textView_page.setTextColor(Color.BLACK);
            textView_page.setLayoutParams(paramsLinearLayout_page);

            linearLayout_page.addView(imageView_page);
            linearLayout_page.addView(textView_page);
            tableRow_page.setBackgroundResource(R.drawable.row_border);

            tableRow_page.setOnClickListener(new View.OnClickListener(){
                @Override
                public void onClick(View v) {
                    Toast.makeText(getApplicationContext(), title, Toast.LENGTH_LONG).show();
                }
            });

            tableLayout.addView(tableRow_page);
        }
    }

UPD: Проблема была в растровом изображении,это всегда было нулевым. Код полностью работает, и я надеюсь, что он кому-нибудь поможет.

...