2015-11-13 100 views

回答

6

你可以這樣做:

一些活動/片段/不管:

List<String> dataset = new ArrayList<>(); 
RecyclerView recyclervSomething; 
LinearLayoutManager lManager; 
MyAdapter adapter; 

//populate dataset, instantiate recyclerview, adapter and layoutmanager 

recyclervSomething.setAdapter(adapter); 
recyclervSomething.setLayoutManager(lManager); 

adapter.setDataset(dataset); 

MyAdapter:

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { 
    private List<String> dataset; 
    public MyAdapter() {} 
    //implement required methods, extend viewholder class... 

    public void setDataset(List<String> dataset) { 
     this.dataset = dataset; 
     notifyDataSetChanged(); 
    } 

    // Swap itemA with itemB 
    public void swapItems(int itemAIndex, int itemBIndex) { 
     //make sure to check if dataset is null and if itemA and itemB are valid indexes. 
     String itemA = dataset.get(itemAIndex); 
     String itemB = dataset.get(itemBIndex); 
     dataset.set(itemAIndex, itemB); 
     dataset.set(itemBIndex, ItemA); 

     notifyDataSetChanged(); //This will trigger onBindViewHolder method from the adapter. 
    } 
} 
+0

我怎麼能用動畫做到這一點?例如,將位置n上的項目移動到列表頂部? – vtproduction

+5

如果你想動畫只是移動元素,你可以使用\t \t'Collections.swap(this.mListItems,oldIndex,index); notifyItemMoved(oldIndex,newIndex)' – carvaq

相關問題