Desidero implementare CardView
nella mia app in modo che tutti gli articoli ListView
siano CardView
s. È semplice come incapsulare un elemento XML ListView
in CardView
?È possibile utilizzare cardview per la voce listview e come
risposta
Sì. Sotto CardView
è solo un semplice FrameLayout
che potresti semplicemente gonfiare in un ListView
(o RecyclerView
).
Ecco un esempio:
<android.support.v7.widget.CardView
android:id="@+id/ly_root"
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="wrap_content"
android:background="#FEFEFE"
android:layout_margin="8dp"
app:cardCornerRadius="4dp">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/iv_cover"
android:layout_width="wrap_content"
android:layout_height="160dp"
android:scaleType="centerCrop"
android:src="@drawable/placeholder"/>
...
</LinearLayout>
</android.support.v7.widget.CardView>
Ed ecco che ad esempio vivono in azione:
Naturalmente si avrebbe bisogno di implementare un adattatore personalizzato per legare in su insieme. Ma questo è come con qualsiasi oggetto personalizzato ListView
. Non c'è niente di speciale in questo.
Sì, è possibile utilizzare CardView
per la voce di elenco in ListView. Ma ti suggerisco di usare RecyclerView invece di ListView, dato che è la versione aggiornata di ListView. Controllare this per RecyclerView con CardView.
Nel caso in cui qualcun altro si imbattesse in questa domanda, Altre risposte sono giuste, ma allora dovresti inserire il tuo CardView
all'interno di FrameLayout e dovresti rendere trasparente il divisore ListView
. L'attributo di elevazione e margine di CardView
non funzionerà se non lo si utilizza all'interno di FrameLayout
.
Così vero. Grazie per averlo indicato. – user3144836
Nei documenti dice solo che estende FrameLayout, vorrei che lo dica direttamente come hai fatto tu. Grazie. – Prof
felice la mia risposta è aiutare le persone. –
È meglio utilizzare CardView con RecyclerView, ecco un esempio.
activity_main.xml (contiene il recyclerview)
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerview" android:layout_height="match_parent" android:layout_width="match_parent"/> </LinearLayout>
cardview.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content" android:layout_width="match_parent" card_view:cardCornerRadius="4dp" android:layout_margin="10dp"> <TextView android:id="@+id/text_cardview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="20dp" /> </android.support.v7.widget.CardView>
buid.gradle (modulo: app)
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.3.0' compile 'com.android.support:cardview-v7:23.0.+' compile 'com.android.support:recyclerview-v7:23.0.+' }
RecyclerViewAdapter.java
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder> { public ArrayList<String> myValues; public RecyclerViewAdapter (ArrayList<String> myValues){ this.myValues= myValues; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View listItem = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview.xml, parent, false); return new MyViewHolder(listItem); } @Override public void onBindViewHolder(MyViewHolder holder, int position) { holder.myTextView.setText(myValues.get(position)); } @Override public int getItemCount() { return myValues.size(); } public static class MyViewHolder extends RecyclerView.ViewHolder { private TextView myTextView; public MyViewHolder(View itemView) { super(itemView); myTextView = (TextView)itemView.findViewById(R.id.text_cardview); } } }
MainActivity.java
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ArrayList<String> myValues = new ArrayList<String>(); //Populate the ArrayList with your own values myValues.add("KitKat"); myValues.add("Lollipop"); myValues.add("Marshmallow"); RecyclerViewAdapter adapter = new RecyclerViewAdapter(myValues); RecyclerView myView = (RecyclerView)findViewById(R.id.recyclerview); myView.setHasFixedSize(true); myView.setAdapter(adapter); LinearLayoutManager llm = new LinearLayoutManager(this); llm.setOrientation(LinearLayoutManager.VERTICAL); myView.setLayoutManager(llm); } }
Fare riferimento a questo tutorial per ulteriori dettagli: A Guide to Android RecyclerView and CardView
Grazie per l'esempio. Ho dovuto rimuovere ".xml" da "R.layout.cardview.xml" in RecyclerViewAdapter.java – Zach
- 1. Come evidenziare la voce selezionata in ListView?
- 2. Come posso deselezionare la voce in ListView?
- 3. voce di elenco personalizzato per ListView Android
- 4. Come impostare il colore di evidenziazione per la voce ListView?
- 5. Separatori ListView in cima e in fondo alla voce ListView
- 6. Android - Come toccare la voce ListView a livello di programmazione
- 7. È possibile utilizzare xmlns sugli stili per definire il raggio dell'angolo di cardView?
- 8. Come trascinare la voce listview in un'altra scheda?
- 9. Centro QML ListView evidenziato voce
- 10. performItemClick in ListView non evidenziare voce
- 11. Android come utilizzare l'adattatore per listView senza estendere la listaAttività
- 12. listview Android all'interno CardView onTouch conflitto ascoltatore/sensibilità
- 13. È possibile utilizzare array_shift() in PHP e ottenere la chiave?
- 14. È possibile estendere AbsListView per creare nuove implementazioni di ListView?
- 15. È possibile utilizzare AVCaptureVideoDataOutput e AVCaptureMovieFileOutput contemporaneamente?
- 16. CheckBox voce Fare listView non cliccabile
- 17. Aggiungi "menu" su ogni voce listview
- 18. ListView scorrere fino alla voce selezionata
- 19. imbottitura CardView e angoli arrotondati
- 20. Perché CardView e RecyclerView richiedono minSdkVersion L?
- 21. È possibile utilizzare swiftMailer su localhost per inviare e-mail?
- 22. È possibile utilizzare Java per creare dll?
- 23. È possibile utilizzare call/cc per implementare la ricorsione?
- 24. È possibile utilizzare la piega per creare elenchi infiniti?
- 25. È possibile utilizzare Symbol.species per oggetti semplici?
- 26. È possibile utilizzare Dapper per aggiornare e inserire modelli?
- 27. Come è possibile impostare data e ora per la notifica
- 28. È possibile utilizzare Swagger per SOAP?
- 29. Ottieni la larghezza di CardView in Adapter.onBindViewHolder
- 30. È possibile utilizzare Kubernetes come Docker Compose?
No, è necessario utilizzare recyclerview invece di listview e aggiungere un adattatore personalizzato con cardview. – Shvet
ovviamente puoi. CardView è un FrameLayout – Blackbelt