Мне нужно скрыть столбцы ListView в activity_view_record. xml, когда TextView в content_main. xml пуст - PullRequest
1 голос
/ 06 марта 2020

У меня есть приложение, которое позволяет пользователю перечислить до 10 лекарств. Если пользователь вводит только пару лекарств, результирующее представление списка показывает пустые столбцы. В частности, мне нужно скрыть столбцы ListView в activity_view_record. xml, когда TextView в content_main. xml пуст.
Если StackOverflow ничему другому меня не научил, так это тому, что кто-то там уже понял это. Ждем вашего ответа. Вот подробности. Элементы ListView определены в activity_view_record. xml ...

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentRight="true"
    android:orientation="vertical">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
    <TextView
            android:id="@+id/medication1"
            android:layout_width="100dp"
            android:layout_height="wrap_content"/>
        <TextView
            android:id="@+id/medication2"
            android:layout_width="100dp"
            android:layout_height="wrap_content"/>
        <TextView
            android:id="@+id/medication3"
            android:layout_width="100dp"
            android:layout_height="wrap_content"/>
    </LinearLayout>
</LinearLayout>

... Столбцы "заголовки" ListView определены в content_main. xml ...

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context=".MainActivity"
    tools:showIn="@layout/app_bar_main">
    <HorizontalScrollView
        android:id="@+id/horizontalScrollView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="fill_horizontal"
                android:orientation="horizontal">
                <TextView
                    android:id="@+id/med1_textview"
                    android:layout_width="100dp"
                    android:layout_height="wrap_content"/>
                <TextView
                    android:id="@+id/med2_textview"
                    android:layout_width="100dp"
                    android:layout_height="wrap_content"/>
                <TextView
                    android:id="@+id/med3_textview"
                    android:layout_width="100dp"
                    android:layout_height="wrap_content"/>
            </LinearLayout>
            <ListView
                android:id="@+id/list_view"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:dividerHeight="0dp"
                android:fastScrollEnabled="true"
                android:scrollbars="none"
                android:transcriptMode="alwaysScroll" />
        </LinearLayout>
    </HorizontalScrollView>
</LinearLayout>

... Я скрыл пустые "заголовки" в content_main. xml с этим кодом в onCreate ...

if (med1_textview.getText().length() == 0){
    med1_textview.setVisibility(View.GONE);
}
if (med2_textview.getText().length() == 0){
    med2_textview.setVisibility(View.GONE);
}
if (med3_textview.getText().length() == 0){
    med3_textview.setVisibility(View.GONE);
}

... Теперь я хочу скрыть столбцы ListView, связанные с этими заголовками. Я пытался: ...

if (med1_textview.getText().length() == 0){
    med1_textview.setVisibility(View.GONE);
    medication1.setVisibility(View.GONE);
}

... Радости нет. Потратив пару дней на StackOverflow, я нашел следующие предложения: ...

setContentView (R.layout.activity_view_record);

... или ...

listView.Columns.Item (3) .Width = 0;

... или ...

listView.Columns.RemoveAt (3);

. .. Но они не сказали, где и как использовать код. Я попробовал следующее: ...

 if (med1_textview.getText().length() == 0){
        med1_textview.setVisibility(View.GONE);
        listView.Columns.Item(3).Width=0;
    }

... и ...

if (med1_textview.getText().length() == 0){
    med1_textview.setVisibility(View.GONE);
    listView.Columns.RemoveAt(3);
}

... Получите следующую ошибку от Android Studio "Не удается разрешить символ" В документации ListView о столбцах ничего не говорится о столбцах, поэтому я предполагаю, что это проблема с адаптером

Столбцы перечислены в publi c классе MainActivity как ...

final int[] to = new int[] { R.id.medication1, R.id.medication2, R.id.medication3, //and so forth//};

.. Следующее находится в MainActivity onCreate ...

dbManager = new DbManager(this);
dbManager.open();
Cursor cursor = dbManager.fetch();

listView = findViewById(R.id.list_view);

adapter = new SimpleCursorAdapter(this, R.layout.activity_view_record, cursor, from, to, 0);
adapter.notifyDataSetChanged();

listView.setAdapter(adapter);

...

...