public class MyWorkout extends AppCompatActivity { Button addExercise // Record how many clicks int clickCounter=0; private ListView mListView; ArrayList<String> listItems = new ArrayList<String>() ArrayAdapter<String> adapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SetContentView(R.layout.activity_my_workout); Toolbar MyWorkouttoolbar = (Toolbar) findViewById(R.id.MyWorkouttoolbar); setSupportActionBar(MyWorkouttoolbar); listItems.add("Power Clean"); listItems.add("Dead Lift"); listItems.add("Hang Clean"); listItems.add("Military Press"); listItems.add("Leg Press"); listItems.add("Squat"); listItems.add("Bench MAX"); listItems.add("Squat MAX"); listItems.add("Stair Stepper"); listItems.add("Treadmill"); listItems.add("Bike"); listItems.add("Elliptical"); listItems.add("Bicep Curls"); listItems.add("Dumb Bell Squats"); listItems.add("Goblet Squats"); listItems.add("Bar Bell Curls"); listItems.add("Bar Bell Bench Press"); listItems.add("Dumb Bell Bench Press"); listItems.add("Incline Bar Bell Bench Press"); listItems.add("Incline Dumb Bell Bench Press"); listItems.add("Decline Dumb Bell Bench Press"); listItems.add("Decline Bar Bell Bench Press"); listItems.add("Dumb Bell Lunges"); listItems.add("Bar Bell Lunges"); listItems.add("Dumb Bell Flys"); listItems.add("Tricep Push Downs"); if (mListView == null) { mListView = (ListView) findViewById(R.id.MyWorkoutlistView); } adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,listItems); setListAdapter(adapter); addExercise = (Button) findViewById(R.id.addExercise); addExercise.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Collections.shuffle(listItems); adapter.getItem(4); adapter.notifyDataSetChanged(); } }); } private void updateListView(){ ListView listView = (ListView)findViewById(R.id.MyWorkoutlistView); } // method which will handle dynamic insertion public void addItems(View v) { listItems.add("Clicked : "+clickCounter++); adapter.notifyDataSetChanged(); } protected ListView getListView(){ if (mListView==null){ mListView = (ListView) findViewById(R.id.MyWorkoutlistView); } return mListView; } protected void setListAdapter(ListAdapter adapter){ getListView().setAdapter(adapter); } protected ListAdapter getListAdapter(){ ListAdapter adapter = getListView().getAdapter(); if (adapter instanceof HeaderViewListAdapter){ return ((HeaderViewListAdapter)adapter).getWrappedAdapter(); } else { return adapter; } } I have a list view populated with exercises. I would like to randomly select an element in an array and add that random element to another list view. Also is it possible to change the original exercise list view to display only the random element? I am new to android studio, so if I am unclear let me know and I will explain better. Thank you
3 Réponses :
Ajouter / Supprimer des éléments à la liste personnalisée Programmatique.Cette Exemple Montrer Comment ajouter / Supprimer des éléments à / en provenance de liste personnalisée, en utilisant le code Java à l'heure d'exécution. Reportez-vous à ce lien: http: //android-er.blogspot .in / 2015/01 / add-reformulation-items-to-personnalisé-listview.html
Edit 1: strong>
MainActivity.java strong> p> Modifier Activity_main.xml Pour avoir deux ListView. strong> p> <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:orientation="vertical"
android:padding="4dp"
tools:context="com.example.androidimageviewlist.MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:autoLink="web"
android:text="http://android-er.blogspot.com/"
android:textStyle="bold" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:background="@android:color/background_dark" >
<LinearLayout
android:id="@+id/pane1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_margin="4dp"
android:background="@android:color/background_light"
android:orientation="vertical" >
<ListView
android:id="@+id/listview1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:id="@+id/pane2"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_margin="4dp"
android:background="@android:color/background_light"
android:orientation="vertical" >
<ListView
android:id="@+id/listview2"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
Il sera préférable que la réponse contienne du code, pas seulement un lien, car lorsque la page renvoyée sera supprimée, vous aurez toujours une réponse autonome
J'ai une vue de liste peuplée avec des exercices. Je voudrais sélectionner un élément dans un tableau et ajouter cet élément aléatoire à une autre vue de la liste. P> blockQuote>
Vous pouvez: p>
- Obtenez une position aléatoire dans le tableau avec
Aléatoire.nextint () code>
li>- récupérez l'élément à cette position, c'est-à-dire
Arr [SélectionnéPosition] Code> Li>
- Mettez l'élément dans la deuxième page
ListView code> S, par exemple avec
arrayadapter.add () code>
. Li> ol>Si vous n'utilisez pas
arrayadapter code>, vous devez implémenter votre interface pour ajouter des éléments ou créer et définir un nouvel adaptateur avec
listview.setadapter () code>
. P>est également possible de modifier la vue de la liste d'exercices d'origine pour afficher uniquement l'élément aléatoire? P> blockQuote>
Bien sûr, mais il y a du travail à faire. Si vous utilisez
arrayadapter code>, vous pouvez simplement
Effacer () Code>
L'adaptateur, puisajoutez () code>
Seul l'élément que vous souhaitez afficher. Pour ne pas perdre la date, vous pouvez conserver tous les exercices dans une matrice / liste externe aux adaptateurs. p>Si vous n'utilisez pas
arrayadapter code>, et souhaitez implémenter votre logique personnalisée, rappelez-vous d'appeler
notifydatasetched an () code>
sur l'adaptateur après modification, de sorte quelistview code> sait se rafraîchir. < / p>
Ok, ça fait un peu plus de sens, pouvez-vous poster un exemple de code afin que je puisse voir. Si vous avez besoin de mon code, je peux poster aussi
Ouais, commencez à poster votre code afin que je puisse dire s'il y a des problèmes avec cela. Aussi c'est une bonne pratique sur le débordement de la pile
ok merci, j'ai posté le code espère que cela rend mon problème plus clair
J'ai édité un peu le code, donc il est plus lisible. Comme je l'ai dit, vous pouvez faire quelque chose sur ces lignes: random r = nouveau aléatoire (); int i = r.nextint (listitems.size ()); String item = listitems.get (i); Arrayadapter
secondListView code> est votre autre liste de liste
Je reçois une erreur dans laquelle Arrayadapter
Le constructeur de deux arguments devrait fonctionner. Si vous souhaitez utiliser le constructeur 4-ARC, vous pouvez écrire: Nouveau ArrayAdapter
ceci code>, doit être un
contexte code>, alors vérifiez cela. (Je suppose que vous avez écrit ce code dans une activité)
vérifier ma réponse ici I explique comment Pour ajouter des éléments dynamiquement dans une liste de liste.
juste au cas où ... p>