Я определил пользовательский элемент в XML для моего ListView, и я хочу, чтобы каждое из них имело пять полей: три уже visible
и два других (телефон и Удалить, см. Ниже) gone
до действия щелчкавыполняется.Исполнение работает, но графически это не то, что я ожидал.
Элемент определен следующим образом:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/txt.name"
android:layout_width="120dp"
android:layout_height="40dp"
android:layout_marginStart="68dp"
android:layout_marginTop="16dp"
android:gravity="center_horizontal|center_vertical"
android:text="Name"
android:textAlignment="center"
android:textSize="18sp" />
<TextView
android:id="@+id/txt.surname"
android:layout_width="120dp"
android:layout_height="40dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="68dp"
android:gravity="center_horizontal|center_vertical"
android:layout_toEndOf="@id/txt.name"
android:text="Surname"
android:textAlignment="center"
android:textColor="@android:color/holo_blue_bright"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/txt.id"
android:layout_width="90dp"
android:layout_height="30dp"
android:layout_marginStart="144dp"
android:layout_marginTop="64dp"
android:gravity="center_horizontal|center_vertical"
android:text="ID"
android:textAlignment="center"
android:textSize="18sp" />
<TextView
android:id="@+id/txt.tel"
android:layout_width="90dp"
android:layout_height="30dp"
android:layout_marginTop="64dp"
android:layout_marginEnd="40dp"
android:layout_toEndOf="@id/txt.id"
android:gravity="center_horizontal|center_vertical"
android:text="Tel"
android:visibility="gone"
android:textAlignment="center"
android:textSize="18sp" />
<Button
android:id="@+id/btn.delete"
android:layout_width="70dp"
android:layout_height="38dp"
android:layout_below="@id/txt.id"
android:layout_marginBottom="368dp"
android:layout_toEndOf="@id/txt.id"
android:visibility="gone"
android:text="Delete"
android:textAllCaps="false" />
</RelativeLayout>
и он должным образом накачан в ListView, но когда я нажимаю на элементы, должны появиться txt.tel TextView
и btn.delete Button
на экране.Код, который я написал, выглядит следующим образом:
ListView list= findViewById(R.id.advanced_list);
final StudentAdapter adapter= new StudentAdapter(
this,
R.layout.custom_list_item,
m.getStudents()
//this works fine, previous code omitted
);
list.setAdapter(adapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
TextView tel= view.findViewById(R.id.txt_tel);
Button delete= view.findViewById(R.id.btn_delete);
int visible= tel.getVisibility();
//doesn't work
switch (visible){
case (View.VISIBLE):
tel.setVisibility(View.GONE);
delete.setVisibility(View.GONE);
break;
case (View.GONE):
tel.setVisibility(View.VISIBLE);
delete.setVisibility(View.VISIBLE);
break;
}
}
});
Графически это происходит следующим образом.
Более того, элемент больше не реагирует на другие щелчки, поэтому я не могу вернуть их «сжатыми» за секундунажмите.Надеюсь, я был ясен, и кто-то может решить обе мои проблемы.