2016-05-06 4 views
0

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

どこにDBを記入しますか? – Alexander

+0

他のアクティビティで、ユーザがそれを呼び出すとき。それはうまく動作します。 – relliz

答えて

0

解決策が見つかりました。

refuelListAdapter = new RefuelListAdapter(this,R.layout.refuel_list_item); 

refuelListAdapter = new RefuelListAdapter(getApplicationContext(),R.layout.refuel_list_item); 

そして、それは今、正常に動作している。この問題を解決するために、私は私のRefuelListActivityで1つの車線を変更しました。 私が推測する助けをありがとう。

関連する問題