【问题标题】:this cod show all array list i want to show first row in array list and then click button show row number two这个鳕鱼显示所有数组列表我想在数组列表中显示第一行,然后单击按钮显示第二行
【发布时间】:2020-03-03 22:12:37
【问题描述】:

这个鳕鱼显示所有数组列表我想在数组列表中显示第一行然后单击按钮显示第二行并再次单击显示第三行然后可以这样做

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

这个鳕鱼显示所有数组列表我想在数组列表中显示第一行然后单击按钮显示第二行并再次单击显示第三行然后可以这样做

activity_english 中的 cod 写出第一个代码

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);



        }
    }
}

【问题讨论】:

  • 你能指出应用程序崩溃的那一行吗?
  • if (index
  • babyViewModel.letterRecourceIDMutableLiveData.observe(this, new Observer>() { @Override public void onChanged(ArrayList babyModels) { adapter.setList(babyModels); } }) ;这很可能是 babyModels 是 null 所以当你点击按钮时——>它正在崩溃
  • 我解决它改变 if (index
  • 我想在单击按钮时从 araay 列表中设置一个图像 a,然后再次单击设置 b,然后再次单击设置 c,但现在将所有 aray 列表设置为解决此问题

标签: android arraylist adapter


【解决方案1】:

所以,作为初学者,您将拥有一个全局索引

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++;
        }
    });

【讨论】:

  • 在(列表)中给我错误,因为它是数组列表而不是列表
  • 然后让arrayList成为一个List
  • 那么请把arrayList做成一个List可以编码
  • 它已经在这段代码中创建了 public void setList(ArrayList letterList) { this.letterList = letterList; notifyDataSetChanged();
  • 对不起,我真的完全不知道你在说什么。
猜你喜欢
  • 1970-01-01
  • 2015-10-25
  • 2017-05-04
  • 2018-02-25
  • 1970-01-01
  • 2017-08-06
  • 2014-03-16
  • 1970-01-01
  • 2018-10-28
相关资源
最近更新 更多