2016-10-11 71 views
0

我使用刷卡刷新布局从本地sqlite加载数据我已经设置极限2和偏移量为0当列表刷新数据没有得到刷新我不知道它为什么是不工作,任何人都可以帮我重新评估这个。SwipeRefresh布局不工作在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的查询,更改“+2+”到“+” 2“+” –

+0

好,但我如何刷新新集DATAS它 –

+0

尝试列表刷新列表时设置偏移量0。 –

回答

0

你正在创建每次取刷新列表时,一个全新的适配器,但你永远不会做与此适配器什么。您必须将其设置在视图(ListView,“RecyclerView”,无论您正在使用)。

或者,您可以在TransactionListAdapter中添加一个方法,允许您更改其中的数据,并使用此方法代替始终创建新适配器。

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

但我必须在我的适配器类或我的活动或数据库中使用这段代码 –

+0

@RameshR无论何时加载新列表。您需要为适配器提供新的列表,否则它如何显示这些项目? (或者,你需要给'ListView'作为你创建的新适配器,否则它如何显示这些项目?) – Karakuri

+0

当我滑过它时我该如何显示偏移量,以及如何找到那个记录的总数表 –