У меня есть приложение, которое позволяет пользователю перечислить до 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);
...