2017-12-04 8 views
0

私たちはsqliteデータベースからデータを含むArrayListをソートしようとしています。 これを使ってリストを並べ替えることができます "ORDER BY" + Col_IDBG + "DESC RecyclerAdapterの位置データがDESCの順序と同期していないことを除いて、 dbList);これは動作しますが、RecyclerAdapterは逆の順序と同期していませんdiffutil sortadapterの位置

問題をRecylerAdapterコードに絞り込みました DiffUtilを使用して同期を維持する方法を知りたいソート方法を使用して?

public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 

    public TextView station; 
    public TextView rowid; 

    public ViewHolder(View itemLayoutView) { 
     super(itemLayoutView); 
     rowid = (TextView) itemLayoutView.findViewById(R.id.rvROWID); 
     station = (TextView)itemLayoutView.findViewById(R.id.rvWEBSITE); 
     // Attach a click listener to the entire row view 
     itemLayoutView.setOnClickListener(this); 
    } 

    @Override // When an item in ListActivity is touched (selected) the RecyclerView has 
    // a OnClickListener attached in the above Code that implements the method below 
    public void onClick(View v) { 
     Intent intentN = new Intent(context,BuyGasDetailActivity.class); 
     Bundle extras = new Bundle(); 
     extras.putInt("POSITION",getAdapterPosition()); 
     extras.putString("FROM_LIST_ACTIVITY","false"); 
     intentN.putExtras(extras); 
     context.startActivity(intentN); 
    } 
} 

位置はDetailActivityに渡され、アイテムに関連付けられたすべてのデータを表示しますeインテントNを持つListActivity

+0

素晴らしい作品Iご不便をおかけして申し訳ございません。あなたのアダプターにDiffUtilsを実装する方法について質問していますか? –

+0

@MohamedHamdaouiはい、DiffUtilを使用してdbListとの同期を保ちたいと思います。またはdbListがDESC順になるようにする他の方法dbListがDESC順である場合問題は選択した項目が間違った項目である –

+0

データベース内の項目の順序が実行時に変更されますか? –

答えて

1

これは単純に解決するだけで、Collections.reverse(dbList)を使用する必要があります。二つの場所RecyclerAdapterとDetailActivity 。ここRecyclerAdapter

@Override 
public int getItemCount() { 
    Collections.reverse(dbList); 
    return dbList.size(); 
} 

、ここでコードがあるのonCreateメソッドテスト済み

dbList = helper.getDataFrom_BUY_GAS_TABLE(); 
    Collections.reverse(dbList); 

内部DetailActivityのコードであると