android - getitematposition - llamar a otro activity al hacer clic en un item de un listview
setvisibility(view.visible) no funciona después de setvisibility(view.gone) (3)
Si coloca el código haciendo visible un elemento en su onClickListener, no será alcanzable (si no consume nada del espacio de la pantalla, no podrá hacer clic en él). Debería poner un diseño con una altura mínima debajo de él, y cuando su vista se haya ido, el nuevo diseño del caparazón se volverá visible, y debería aparecer visible en OnClickListener. De esta forma, una vez que su Vista se haya ido, este nuevo diseño podrá traerla de regreso.
Vi una publicación sobre esto y entendí el problema. Pero, ¿cómo puede hacerlo? Tengo ListView
con un elemento que se puede expandir, pero una vez que la vista se ha ido, no puede volver a estar visible, a menos que tenga espacio libre. ¿Cómo hacer ese espacio?
private void mySetOnItemListener() {
l.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view,
int position, long arg3) {
Log.d("onItemClick","called");
LinearLayout ll = (LinearLayout)view.findViewById(R.id.llOpenedField);
ll.setVisibility(View.VISIBLE);
}
});
}
mi vistaDisposición
<?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="wrap_content"
android:orientation="vertical"
android:descendantFocusability="blocksDescendants">
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal"
android:weightSum="5" >
<TextView
android:id="@+id/tv_name"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="4"
android:padding="7dp"
android:text="item"
android:textColor="@android:color/background_dark"
android:textSize="25dp" />
</LinearLayout>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/llOpenedField"
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal"
>
<ImageButton
android:id="@+id/ibInformation"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:src="@drawable/info" />
</LinearLayout>
</LinearLayout>
el LinearLayout
android:id="@+id/llOpenedField"
es lo que intento hacer gone
al inicio.
pongo el atributo gone
en getView()
dentro de BaseAdapter
.
por favor revisa esta respuesta. Esta respuesta funciona para mí.
TranslateAnimation translateAnimation = new TranslateAnimation(0, 50, 0, 0);
int animationTime = 200;
translateAnimation.setDuration(animationTime);
translateAnimation.setFillEnabled(true);
translateAnimation.setFillAfter(true);
yourView.startAnimation(translateAnimation);
yourView.setVisibility(View.VISIBLE);
prueba esto y modifica de acuerdo a tu necesidad, este no es un elemento de la lista en el que estoy haciendo clic
Make Linear layout android:visibility="gone"
; primero y haz esto esto.
@Override
public void onClick(View v)
{
LinearLayout ll = (LinearLayout)findViewById(R.id.vis);
if(v == ex)
{
if(ll.getVisibility() == View.VISIBLE)
ll.setVisibility(View.GONE);
else
ll.setVisibility(View.VISIBLE);
}
actualización: - Estas son líneas para ti ... que harán que la expansión y el colapso sean adecuados, y no habrá espacio libre allí.
if(ll.getVisibility() == View.VISIBLE)
ll.setVisibility(View.GONE);
else
ll.setVisibility(View.VISIBLE);