2015-07-11 5 views
1

Я пытаюсь разработать приложение для Android, которое может отображать значения из нескольких таблиц.Значения не заполняются в Listview

Я использовал базовый адаптер для отображения значений, так как мне просто нужно отображать запрошенные значения в списке. Но когда я пытаюсь отобразить значения в виде списка, он пуст.

Я не уверен, что я сделал неправильно.

Я использую метод ниже, чтобы запросить данные из базы данных, чтобы отобразить только требуемые значения.

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

Я не хочу использовать адаптер курсора, так как мне нужно изменить columb от Assetid до _id, в этом случае я получу ошибку с неоднозначным именем столбца. Если вы знаете какую-либо альтернативу, вы можете предложить ее. – NikhilRcop

+1

Чтобы решить эту проблему, я обычно называю имя столбца, которое я хочу использовать как идентификатор непосредственно в запросе (например, выберите *, columname как _id из таблицы). –

+0

Thankx попробовал еще раз с помощью адаптера курсора и его работы. – NikhilRcop

Смежные вопросы