android listview viewflipper

Android+¿Utiliza ViewFlipper para voltear elementos individuales dentro de un ListView?



(2)

Si su pregunta es correcta, puede usar ViewFlipper dentro de un diseño que defina una fila en su lista e iniciarla de la manera que desee al representar la vista correspondiente

Esta es probablemente una pregunta estúpida.

Sé que puedo envolver un ListView en ViewFlipper, pero ¿podemos envolver elementos ListView individuales en un ViewFlipper? Por ejemplo, la última aplicación de Twitter usa un ListView para mostrar los Tweets. También le permite establecer configuraciones en elementos individuales deslizando el tweet fuera del camino exponiendo los iconos de opción de configuración a continuación. ¿Es una implementación personalizada o tenemos la capacidad de crear algo similar usando ListView y ViewFlipper? Gracias, cualquier consejo es apreciado!

Pasé un tiempo con esto y obtuve el ListView para mostrar contenido adicional a través de ViewFlipper. Sin embargo, la vista solo parece "voltear" en el último elemento en el ListView. ¿Cómo hago para que cada artículo se voltee cuando se hace clic? Aquí hay un código:

row.xml

<?xml version="1.0" encoding="utf-8"?> <ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/flipper" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/toptext" android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="1" android:gravity="center_vertical" /> <TextView android:id="@+id/bottomtext" android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="1" android:gravity="center_vertical" /> </ViewFlipper>

main.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ListView android:id="@id/android:list" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout>

ListActivityView.java - extiende ListActivity

... @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ... } @Override protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); // doesn''t matter which line is clicked // only the last item in the ListView displays the bottomText viewFlipper.showNext(); }

ListingAdapter.java - extiende ArrayAdapter

@Override public View getView(int position, View convertView, ViewGroup parent) { View v = convertView; if (v == null) { LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = vi.inflate(R.layout.row, null); viewFlipper = (ViewFlipper) v.findViewById(R.id.flipper); }


Below code helps you achieve a requirement for having a view flipper in list view with invidual row flipping ## xml file ## <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/regularLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="@dimen/activity_horizontal_margin"> <ViewFlipper android:id="@+id/row_item_flipper" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent"> <TextView android:id="@+id/list_item" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Regular Layout" android:textSize="28sp" /> <Button android:text="Flip" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/front_button" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent"> <TextView android:id="@+id/backTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Flip row done" android:textSize="18sp" /> <Button android:text="Flip back" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/back_button" /> </LinearLayout> </ViewFlipper> </LinearLayout> ---------- ## Java code ## @Override public ItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_item, parent, false); return new ItemViewHolder(itemView); } @Override public void onBindViewHolder(final ItemViewHolder holder, int position) { final CustomItem data = dataList.get(position); holder.regularLayout.setVisibility(View.VISIBLE); holder.swipeLayout.setVisibility(View.GONE); holder.listItem.setText(data.dataItemValue ); holder.backTextView.setText(data.dataItemValue + " position : "+ position); holder.viewFlipper.setFlipInterval(0); holder.viewFlipper.setInAnimation(null); holder.viewFlipper.setOutAnimation(null); if(holder.viewFlipper.getDisplayedChild()==0 && data.isFlipON){ holder.viewFlipper.setDisplayedChild(1); } else if(holder.viewFlipper.getDisplayedChild()==1 && !data.isFlipON){ holder.viewFlipper.setDisplayedChild(0); }else if(data.isFlipON){ holder.viewFlipper.setDisplayedChild(1); }else{ holder.viewFlipper.setDisplayedChild(0); } holder.frontButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { AnimationFactory.flipTransition(holder.viewFlipper, AnimationFactory.FlipDirection.LEFT_RIGHT); data.isFlipON = true; } }); holder.backButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { data.isFlipON = false; AnimationFactory.flipTransition(holder.viewFlipper, AnimationFactory.FlipDirection.LEFT_RIGHT); } }); }