эта треска показать весь список массивов, я хочу показать первую строку в списке массивов, а затем нажать кнопку показать строку номер два - PullRequest
0 голосов
/ 07 ноября 2019

эта треска показывает список всех массивов. Я хочу показать первую строку в списке массивов, а затем нажмите кнопку показать строку номер два и нажмите еще раз, чтобы показать строку номер три, а затем можете сделать это

public void onClick (View v) {babyViewModel.getLetterRecourceID ();

этот код отображает список всех массивов. Я хочу показать первую строку в списке массивов, а затем нажмите кнопку показать номер строки два и нажмите еще раз, чтобы показать номер строки три, а затем можете это сделать

треска в activity_english отправляет первый код

activity_englishletters
package com.example.learnn;

import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import com.example.learnn.databinding.ActivityEnglishcolorsBinding;
import com.example.learnn.databinding.ActivityEnglishlettersBinding;
import com.example.learnn.ui.BabyListAdapter;
import com.example.learnn.ui.BabyModel;
import com.example.learnn.ui.BabyViewModel;

import java.util.ArrayList;

public class EnglishlettersActivity extends AppCompatActivity {

    BabyViewModel babyViewModel;
    ImageView imagee,next;
    RecyclerView recycler;
    private int index = 0;
    ArrayList arrayList,letterList;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ActivityEnglishlettersBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_englishletters);

        imagee = (ImageView)findViewById(R.id.imagee);
        recycler = (RecyclerView)findViewById(R.id.recycler);

        final BabyListAdapter adapter = new BabyListAdapter();
        recycler.setAdapter(adapter);
        recycler.setLayoutManager(new LinearLayoutManager(this));

        babyViewModel = ViewModelProviders.of(this).get(BabyViewModel.class);
        babyViewModel.letterRecourceIDMutableLiveData.observe(this, new Observer<ArrayList<BabyModel>>() {
            @Override
            public void onChanged(ArrayList<BabyModel> babyModels) {
                adapter.setList(babyModels);
            }
        });

        binding.next.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                babyViewModel.getLetterRecourceID();
                index = index+1;
                if (index < letterList.size()) {
                    imagee.setBackgroundResource( (int) letterList.get( index  ) );
                    return;
                }

                if (index == letterList.size()) {
                    imagee.setBackgroundResource( (int) letterList.get( 0 ) );
                    index = 0;
                }
            }
        });
    }


}


viewModel

package com.example.learnn.ui;

import com.example.learnn.R;

import java.util.ArrayList;

import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;

public class BabyViewModel extends ViewModel {

    ArrayList arrayList;

    public MutableLiveData<ArrayList<BabyModel>> letterRecourceIDMutableLiveData = new MutableLiveData<>();


    public void getLetterRecourceID(){
        letterRecourceIDMutableLiveData.setValue(getDataFromDatabase());
     }

     private ArrayList<BabyModel> getDataFromDatabase(){
        ArrayList<BabyModel> arrayList = new ArrayList<>();
         arrayList.add(new BabyModel(R.drawable.a));
         arrayList.add(new BabyModel(R.drawable.b));
         arrayList.add(new BabyModel(R.drawable.c));
         arrayList.add(new BabyModel(R.drawable.d));
         arrayList.add(new BabyModel(R.drawable.e));
         return arrayList;
    }
}

adapter

package com.example.learnn.ui;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import com.example.learnn.R;

import java.util.ArrayList;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

public class BabyListAdapter extends RecyclerView.Adapter<BabyListAdapter.BabyViewHolder> {

    private ArrayList<BabyModel> letterList = new ArrayList<>();

    @NonNull
    @Override
    public BabyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return new BabyViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.litter_list_item, parent, false));
    }

    @Override
    public void onBindViewHolder(@NonNull BabyViewHolder holder, int position) {
        holder.image.setImageResource(letterList.get(position).getLetterRecourceID());

    }

    @Override
    public int getItemCount() {
        return letterList.size();
    }


    public void setList(ArrayList<BabyModel> letterList) {
        this.letterList = letterList;
        notifyDataSetChanged();
    }

    public class BabyViewHolder extends RecyclerView.ViewHolder {
        ImageView image;
        public BabyViewHolder(@NonNull View itemView) {
            super(itemView);
            image = itemView.findViewById(R.id.imagee);



        }
    }
}

1 Ответ

0 голосов
/ 08 ноября 2019

Итак, для начала у вас будет глобальный индекс

int index=0;

, затем нажмите кнопку:

babyViewModel.letterRecourceIDMutableLiveData.observe(this, new Observer<ArrayList<BabyModel>>() {
        @Override
        public void onChanged(ArrayList<BabyModel> babyModels) {
            List<BabyModel> list = babyModels.subList(0, index);
            adapter.setList(list);
            index++;
        }
    });
...