2016-10-11 3 views
0

Я использую макет обновления swipe для загрузки данных из локального sqlite. Я установил предел 2 и смещение как 0, когда список обновлен, данные не обновляются. Я не знаю, почему это не работает, кто-нибудь может мне помочь.SwipeRefresh layout не работает в sqlite

База данных:

public ArrayList<TransactionSum> getAllTransactionList(int offset) { 

    ArrayList<TransactionSum> transactionsum = new ArrayList<TransactionSum>(); 
    String selectquery = "SELECT tid,SUM(totalamount) as 'total',strftime('%m-%Y', tdate) as 'month' FROM " + TRANSACTION_LABELS + " WHERE tdate BETWEEN (select min(tdate) from transactionlabel) AND (select max(tdate) from transactionlabel) GROUP BY strftime('%m-%Y', tdate) ORDER BY strftime('%m-%Y', tdate) DESC LIMIT "+2+" OFFSET "+offset+" "; 
    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor cursor = db.rawQuery(selectquery, null); 
    if (cursor.moveToFirst()) { 
     do { 
      TransactionSum transactiontotal = new TransactionSum(); 
      transactiontotal.setId(cursor.getString(0)); 
      transactiontotal.setTotalamount(cursor.getString(1)); 
      transactiontotal.setMonth(cursor.getString(2)); 

      transactionsum.add(transactiontotal); 

     } while (cursor.moveToNext()); 

    } 
    cursor.close(); 
    db.close(); 
    return transactionsum; 
} 

активность:

@Override 
public void onRefresh() { 
    fetchList(); 
} 

private void fetchList() { 
    swipeRefreshLayout.setRefreshing(true); 


    databaseHandlerOtherChgs=new DatabaseHandlerOtherChgs(getApplicationContext()); 



    transactionitems=new ArrayList<TransactionSum>(); 
    transactionitems=databaseHandlerOtherChgs.getAllTransactionList(offSet); 

     adapter = new TransactionListNewAdapter(this, transactionitems); 
     for(int i=offSet;i<transactionitems.size();i++){ 
      offSet=offSet+i; 
     } 

     adapter.notifyDataSetChanged(); 



    swipeRefreshLayout.setRefreshing(false); 
} 
+0

Я думаю, что есть опечатка ошибка в вашем Sqlite запросе Change «+2+» на «+» 2 «+» –

+0

Хорошо, но как я обновить список с новым набором DATAS в нем –

+0

ПЫТАЮТСЯ set offset 0 при обновлении списка. –

ответ

0

Вы создаете целый новый адаптер каждый раз, когда вы запрашиваете Обновлять список, но вы ничего с этим адаптером не делают. Вы должны установить его на вид (ListView, `RecyclerView ', в зависимости от того, что вы используете).

Или вы можете добавить метод к TransactionListAdapter, который позволяет вам изменять данные в нем и использовать этот метод вместо создания новых адаптеров все время.

public void setTransactionList(ArrayList<TransactionSum> newList) { 
    mList = newList; 
    notifyDataSetChanged(); 
} 
+0

, но где я должен используйте этот фрагмент кода в классе адаптера или в моей деятельности или в базе данных. –

+0

@RameshR Всякий раз, когда вы загружаете новый список. Вам нужно предоставить адаптеру новый список, или как он может отображать эти элементы? (Или вам нужно предоставить 'ListView' новый адаптер, который вы создали, в противном случае, как он может отображать эти элементы?) – Karakuri

+0

как я могу наложить смещение, когда оно пробито, а также как я мог найти общее количество записей в этом table –

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