Мне уже помогли с этой проблемой, но теперь, когда я запускаю приложение, эта ошибка приходит.Через 2 часа все было хорошо, но я ничего не изменил, что это ??Я пытаюсь взять данные из Firestore и передать их в ListView, а затем перейти к следующему действию.
Ошибка:
Процесс: com.example.eugene.lafinalproduction, PID: 9741java.lang.IllegalArgumentException: n <= 0: 0 в java.util.Random.nextInt (Random.java:182) в com.example.eugene.lafinalproduction.ListViewPlaces $ 1.onComplete (ListViewPlaces.java:63) в com.google.android.gms.tasks.zzj.run (неизвестный источник) по адресу android.os.Handler.handleCallback (Handler.java:815) по адресу android.os.Handler.dispatchMessage (Handler.java:104) по адресу android.os.Looper.loop (Looper.java:207) на android.app.ActivityThread.main (ActivityThread.java:5763) на java.lang.reflect.Method.invoke (собственный метод) на com.android.internal.os.ZygoteInit $MethodAndArgsCaller.run (ZygoteInit.java:789) на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:679) </p>
Ошибка в этой строке:
randomPlaceList.add(placesList.get(randomGenerator.nextInt(placeCount)));
Основная деятельность:
public class ListViewPlaces extends AppCompatActivity {
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference placesRef = rootRef.collection("Places");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_view_places);
placesRef.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
List<Places> placesList = new ArrayList<>();
for (DocumentSnapshot document : task.getResult()) {
Places places = document.toObject(Places.class);
placesList.add(places);
}
if (placesList.size() > 0) {
int placeCount = placesList.size();
System.out.println(placesList.size());
Random randomGenerator = new Random();
List<Places> randomPlaceList = new ArrayList<>();
for (int i = 0; i <= 3; i++) {
String randomIndex = randomGenerator.nextInt(randomPlaceList.size());
randomPlaceList.add(randomIndex);
ListView mListView = (ListView) findViewById(R.id.place_list);
PlacesAdapter placesAdapter = new PlacesAdapter(getApplicationContext(), randomPlaceList);
mListView.setAdapter(placesAdapter);
}
}
}
}
});
}}
Класс модели:
public class Places {
private String name;
public Places() {
}
public Places(String name) {
this.name = name;
}
public String getName() { return name; }
Мой адаптер:
class PlaceAdapter extends ArrayAdapter<Places> {
private ArrayList<Places> dataSet;
Context mContext;
private static class ViewHolder {
TextView name_text;
ImageView image_text;
}
public PlaceAdapter(ArrayList<Places> dataSet, Context context ) {
super(context, R.layout.item_list, dataSet);
this.dataSet = dataSet;
this.mContext = context;
}
@Override
public View getView(int position, View converView, ViewGroup parent) {
Places places = getItem(position);
ViewHolder viewHolder;
final View result;
if (converView == null) {
viewHolder = new ViewHolder();
LayoutInflater inflater = LayoutInflater.from(getContext());
converView = inflater.inflate(R.layout.item_list, parent, false);
viewHolder.name_text = (TextView) converView.findViewById(R.id.text_image_id);
viewHolder.image_text = (ImageView) converView.findViewById(R.id.image_id);
result = converView;
converView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) converView.getTag();
result = converView;
}
viewHolder.name_text.setText(places.getName());
Glide.with(getContext()).load(places.getImage()).into(viewHolder.image_text);
return converView;
И второе занятие:
public class Card_activity extends AppCompatActivity implements View.OnClickListener{
TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.massive_places);
mTextView = findViewById(R.id.head_name);
String name = getIntent().getStringExtras("name")
mTextView.setText(name);
}
}