2015-07-11 179 views
1

我想開發一個可以顯示多個表中的值的android應用程序。值不填充在列表視圖

我已經使用Base Adapter來顯示值,因爲我只需要在列表中顯示查詢的值。但是當我嘗試在列表視圖中顯示值時,它是空白的。

我不知道我做錯了什麼。

我使用下面的方法來查詢數據庫中的數據,只顯示所需的值。

public Cursor getAssetInStore() 
    { 

     SQLiteDatabase db_database = getReadableDatabase(); 

     Cursor c = db_database.rawQuery("SELECT asset_name,warrenty,AssetImage,asset_status FROM `Assets`,`AseetIssued` WHERE Assets.Assetid = AseetIssued.Assetissuedid AND asset_status =?" , 
       new String [] {"In Storage"}, null); 
     return c; 

    } 

以下方法用於將值填充到列表視圖中。

private void populateAssetListView() 
    { 

     Cursor c = db_database.getAssetInStore(); 
     AssetListView.setAdapter(new AssetListAdapter(this, c)); 


    } 


    public class AssetListAdapter extends BaseAdapter 
    { 

     private Context mContext; 
     Cursor cursor; 

     public AssetListAdapter(Context context, Cursor c) { 
      super(); 

      mContext = context; 
      cursor =c ; 

     } 


     @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 position, View view, ViewGroup parent) { 

      LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      //The layout is assigned to the custome created created in this case it is customeassetview the cales will be displayed as per this list 
      view = inflater.inflate(R.layout.assetsinstore_placeholder, null); 

      cursor.moveToPosition(position); 

      TextView Assetsstatus = (TextView) view.findViewById(R.id.Assetssatutsstore_view); 
      int status = cursor.getInt(cursor.getColumnIndex("asset_status")); 
      Assetsstatus .setText(String.valueOf(status)); 

      TextView Assetsname = (TextView) view.findViewById(R.id.Assetstore_name_view); 
      String Assetname = cursor.getString(cursor.getColumnIndex("asset_name")); 
      Assetsname.setText(Assetname); 

      TextView Warrenty = (TextView) view.findViewById(R.id.Assetstore_Warrenty_view); 
      String CustDesignation = cursor.getString(cursor.getColumnIndex("warrenty")); 
      Warrenty .setText(CustDesignation); 


      ImageView AssetImage = (ImageView) view.findViewById(R.id.list_image); 

      byte[] bb = cursor.getBlob(cursor.getColumnIndex("AssetImage")); 
      AssetImage.setImageBitmap(BitmapConver.getPhoto(bb)); 

      return view; 
     } 
    } 
+0

'getCount'必須返回數據集的大小。它不能返回0 – Blackbelt

回答

1

嘗試使用遊標適配器代替基本適配器。此外,請注意,您傳遞給光標的位置可能不是您的想法。

+0

我不想使用遊標適配器,因爲我需要將AssedB從Assetid更改爲_id,在這種情況下,我將得到一個含糊不清的列名的錯誤。如果你知道任何替代方案,你會建議嗎? – NikhilRcop

+1

爲了解決這個問題,我通常在查詢中直接使用我想用作id的列名(例如,select *,columname as _id from table)。 –

+0

Thankx確實再次嘗試使用遊標適配器並立即開始工作。 – NikhilRcop