Пользовательский ListView не отображается в эмуляторе — черная активностьAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Пользовательский ListView не отображается в эмуляторе — черная активность

Сообщение Anonymous »

Я пытаюсь отобразить пользовательский ListView с помощью специального адаптера для класса Car. Однако когда я запускаю приложение в эмуляторе, экран активности становится черным. Я добавил статический текст в макет XML для отладки, и текст появился, поэтому проблема, похоже, связана с ListView или setAdapter().
Вот моя настройка:
Макет XML (activity_main.xml):
` `
Это моя основная деятельность:

Код: Выделить всё

package com.example.carscustomadapter;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

ListView carsList = findViewById(R.id.cars_list);

List cars = new ArrayList();

cars.add(new Car(1000,20,2));
cars.add(new Car(1000,40,2));
cars.add(new Car(1000,60,8));
cars.add(new Car(1000,100,5));
cars.add(new Car(1000,20,2));
cars.add(new Car(1000,40,2));
cars.add(new Car(1000,60,8));
cars.add(new Car(1000,100,5));
cars.add(new Car(1000,20,2));
cars.add(new Car(1000,40,2));
cars.add(new Car(1000,60,8));
cars.add(new Car(1000,100,5));
cars.add(new Car(1000,20,2));
cars.add(new Car(1000,40,2));
cars.add(new Car(1000,60,8));
cars.add(new Car(1000,100,5));

CarsAdapter carsAdapter = new CarsAdapter(cars);
carsList.setAdapter(carsAdapter);

}
}
Специальный адаптер (CarsAdapter)

Код: Выделить всё

 public class CarsAdapter extends BaseAdapter implements View.OnClickListener {

private List cars;

public CarsAdapter(List cars) {
this.cars = cars;
}

@Override
public int getCount() {
return 0;
}

@Override
public Object getItem(int position) {
return null;
}

@Override
public long getItemId(int position) {
return 0;
}

@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if (view == null)
view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.car_layout, viewGroup, false);

TextView kmTv = view.findViewById(R.id.km_tv);
TextView fuelTv = view.findViewById(R.id.fuel_tv);

Button driveBtn = view.findViewById(R.id.drive_btn);
driveBtn.setTag(i);

Car car = cars.get(i);

kmTv.setText(car.getMileage() + "");
fuelTv.setText(car.getFuel() + "");

driveBtn.setOnClickListener(this);

return view;
}

@Override
public void onClick(View v) {
LinearLayout root = (LinearLayout) v.getParent();
EditText editText = root.findViewById(R.id.km_et);
Car car = cars.get((Integer) v.getTag());
car.drive(Integer.parseInt(editText.getText().toString()));
notifyDataSetChanged();

}
}
Проблема::
При запуске приложения экран черный, а ListView ничего не отображает. Я подозреваю, что проблема может быть связана с:
1.Конфигурацией или реализацией адаптера.
2.В ListView предоставляются неправильные данные.
3.Проблемы с макетом car_layout.xml (здесь не представлен, но может иметь значение).
Изображение экрана
Что я пробовал:1.Добавление статического текста в файл Activity_main.xml для подтверждения макет 2. правильно отрисовывается.
3. Проверка вызова setAdapter().
4. Отладка приложения, но я не уверен, в чем проблема.
Чего я ожидаю
Я ожидаю увидеть ListView, заполненный строками объектов Car. В каждой строке должен отображаться пробег и топливо, а также кнопка действий.

Подробнее здесь: https://stackoverflow.com/questions/745 ... k-activity
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»