Вот моя настройка:
Макет 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);
}
}
Код: Выделить всё
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
Мобильная версия