Androidが新機能です。上位のAPIでListViewアイテムが空です
私の問題は、私は私がbuild.appを見たとき、私は今、キットカット(API 19)に、目標APIを設定しますが、プロジェクトを作成している間、私のリストビューアイテムのビューが19
より高いAPIに表示されないということですtargetSdkVersion
は23です。minSdkVersion
は14です。
私は携帯電話をMarshmellowにアップグレードしましたが、現在は電話でプロジェクトをデバッグしていますが、完璧に動作しますが、ListViewの項目は空でTextViewsが必要です...一方、KitKatを使ってエミュレートされた電話機のListViewアイテムでも、すべて正常に動作します。
ArrayAdapterとCursorを使用してSQLite dbからデータを取得しました。
このプロジェクトを作成してから上位のAPIで正しく動作させるには、他の方法がありますか?
build.app
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.example.asd.sqlite1"
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:design:23.2.1'
}
のListViewクラス
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ListView;
public class RefuelListActivity extends AppCompatActivity {
ListView RefuelListView;
SQLiteDatabase sqLiteDatabase;
DBHelper dbHelper;
Cursor cursor;
RefuelListAdapter refuelListAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.refuel_list);
android.support.v7.widget.Toolbar toolbar = (android.support.v7.widget.Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
if (getSupportActionBar() != null){
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(false);
}
RefuelListView = (ListView)findViewById(R.id.refuel_tab_list_view);
refuelListAdapter = new RefuelListAdapter(getApplicationContext(),R.layout.refuel_list_item);
RefuelListView.setAdapter(refuelListAdapter);
dbHelper = new DBHelper(getApplicationContext());
sqLiteDatabase = dbHelper.getWritableDatabase();
cursor = dbHelper.getAllInformations(sqLiteDatabase);
if (cursor.moveToFirst()){
do{
int fuel_id;
float fuel_amount, fuel_price, cash_spend, km_counter;
String fuel_date;
// (0.id, 1.fuel_amount, 2.fuel_price, 3.cash_spend, 4.km_counter, 5.fuel_date)
fuel_id = cursor.getInt(0);
fuel_amount = cursor.getFloat(1);
fuel_price = cursor.getFloat(2);
cash_spend = cursor.getFloat(3);
km_counter = cursor.getFloat(4);
fuel_date = cursor.getString(5);
RefuelListDataProvider refuelListDataProvider = new RefuelListDataProvider(fuel_id, fuel_amount,fuel_price,cash_spend,km_counter,fuel_date);
refuelListAdapter.add(refuelListDataProvider);
}while (cursor.moveToNext());
}
}
}
アダプタクラス
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class RefuelListAdapter extends ArrayAdapter {
List list = new ArrayList();
public RefuelListAdapter(Context context, int resource) {
super(context, resource);
}
static class LayoutHandler{
TextView KM_COUNTER, FUEL_AMOUNT, FUEL_PRICE, CASH_SPEND, FUEL_DATE;
}
@Override
public void add(Object object) {
super.add(object);
list.add(object);
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
LayoutHandler layoutHandler;
if (row == null){
//No idea what this is doing...
LayoutInflater layoutInflater = (LayoutInflater)this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = layoutInflater.inflate(R.layout.refuel_list_item,parent,false);
layoutHandler = new LayoutHandler();
layoutHandler.KM_COUNTER = (TextView)row.findViewById(R.id.lv_refuel_km_counter_text);
layoutHandler.FUEL_AMOUNT = (TextView)row.findViewById(R.id.lv_refuel_fuel_amount_text);
layoutHandler.FUEL_PRICE = (TextView)row.findViewById(R.id.lv_refuel_fuel_price_text);
layoutHandler.CASH_SPEND = (TextView)row.findViewById(R.id.lv_refuel_cost_text);
layoutHandler.FUEL_DATE = (TextView)row.findViewById(R.id.lv_refuel_data_text);
row.setTag(layoutHandler);
}
else { layoutHandler = (LayoutHandler)row.getTag(); }
RefuelListDataProvider refuelListDataProvider = (RefuelListDataProvider)this.getItem(position);
layoutHandler.KM_COUNTER.setText(String.valueOf(refuelListDataProvider.getKm_counter()));
layoutHandler.FUEL_AMOUNT.setText(String.valueOf(refuelListDataProvider.getFuel_amount()));
layoutHandler.FUEL_PRICE.setText(String.valueOf(refuelListDataProvider.getFuel_price()));
layoutHandler.CASH_SPEND.setText(String.valueOf(refuelListDataProvider.getCash_spend()));
layoutHandler.FUEL_DATE.setText(refuelListDataProvider.getFuel_date());
return row;
}
}
私はまた、データプロバイダクラスを使用します。
public class RefuelListDataProvider {
private int fuel_id;
private float fuel_amount, fuel_price, cash_spend, km_counter;
private String fuel_date;
public RefuelListDataProvider(Integer fuel_id, Float fuel_amount, Float fuel_price, Float cash_spend, Float km_counter, String fuel_date){
this.fuel_id = fuel_id;
this.fuel_amount = fuel_amount;
this.fuel_price = fuel_price;
this.cash_spend = cash_spend;
this.km_counter = km_counter;
this.fuel_date = fuel_date;
}
public int getFuel_id() {
return fuel_id;
}
public void setFuel_id(int fuel_id) {
this.fuel_id = fuel_id;
}
public float getCash_spend() {
return cash_spend;
}
public void setCash_spend(float cash_spend) {
this.cash_spend = cash_spend;
}
public float getFuel_amount() {
return fuel_amount;
}
public void setFuel_amount(float fuel_amount) {
this.fuel_amount = fuel_amount;
}
public String getFuel_date() {
return fuel_date;
}
public void setFuel_date(String fuel_date) {
this.fuel_date = fuel_date;
}
public float getFuel_price() {
return fuel_price;
}
public void setFuel_price(float fuel_price) {
this.fuel_price = fuel_price;
}
public float getKm_counter() {
return (km_counter);
}
public void setKm_counter(float km_counter) {
this.km_counter = km_counter;
}
}
どこにDBを記入しますか? – Alexander
他のアクティビティで、ユーザがそれを呼び出すとき。それはうまく動作します。 – relliz