6
votes

Dynamic ListView in Android Studio: Sélection de l'élément aléatoire et de la liste de la liste de mise à jour

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 

0 commentaires

3 Réponses :


1
votes

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> xxx pré>

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>


1 commentaires

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



1
votes

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.

Vous pouvez:

  1. Obtenez une position aléatoire dans le tableau avec Aléatoire.nextint ()
  2. récupérez l'élément à cette position, c'est-à-dire Arr [SélectionnéPosition]
  3. Mettez l'élément dans la deuxième page ListView S, par exemple avec arrayadapter.add () .

    Si vous n'utilisez pas arrayadapter , vous devez implémenter votre interface pour ajouter des éléments ou créer et définir un nouvel adaptateur avec listview.setadapter () .

    est également possible de modifier la vue de la liste d'exercices d'origine pour afficher uniquement l'élément aléatoire?

    Bien sûr, mais il y a du travail à faire. Si vous utilisez arrayadapter , vous pouvez simplement Effacer () L'adaptateur, puis ajoutez () 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.

    Si vous n'utilisez pas arrayadapter , et souhaitez implémenter votre logique personnalisée, rappelez-vous d'appeler notifydatasetched an () sur l'adaptateur après modification, de sorte que listview sait se rafraîchir. < / p>


6 commentaires

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 secondaDapter = nouveau arrayadapter (this, android.r.layout.simple_list_item_ 1); secondadapter.add (article); secondListView.setadapter (secondaDapter); secondListView est votre autre liste de liste


Je reçois une erreur dans laquelle Arrayadapter secondaDapter = New Arrayadapter (this, android.r.layout.simple_list_item_ 1); Je pense qu'un autre paramètre doit être déclaré après une liste simple de la liste 1, mais lorsque je tape la liste des listitems, il y a une expression attendue


Le constructeur de deux arguments devrait fonctionner. Si vous souhaitez utiliser le constructeur 4-ARC, vous pouvez écrire: Nouveau ArrayAdapter (this, android.r.layout.simple_list_item_ 1, android.r.id.text1, nouvelle arraylist () ); . Vous avez besoin d'une nouvelle liste comme dernier argument. Aussi le premier argument, ceci , doit être un contexte , alors vérifiez cela. (Je suppose que vous avez écrit ce code dans une activité)



1
votes

vérifier ma réponse ici I explique comment Pour ajouter des éléments dynamiquement dans une liste de liste.

juste au cas où ... xxx


0 commentaires