2016-11-18 85 views
0

我使用一个RecyclerView来显示两个相邻的列表,迄今为止很好,但我面临的问题是:我将数据存储在一个公共的无效方法,但是当我调用该方法初始化它不换言之工作清单中的项目没有显示出来Android - RecyclerView数据没有显示

#这是方法

public void InitData(){  
    DataHolder item1 = new DataHolder(); 
    item1.setEnglish("word in eng"); 
    item1.setGerman("word in ger"); 
    list.add(item1); 

    DataHolder item2 = new DataHolder(); 
    item2.setEnglish("word in eng"); 
    item2.setGerman("word in ger"); 
    list.add(item2); 

    DataHolder item3 = new DataHolder(); 
    item3.setEnglish("word in eng"); 
    item3.setGerman("word in ger"); 
    list.add(item3); 

    DataHolder item4 = new DataHolder(); 
    item4.setEnglish("word in eng"); 
    item4.setGerman("word in ger"); 
    list.add(item4); 

    DataHolder item5 = new DataHolder(); 
    item5.setEnglish("word in eng"); 
    item5.setGerman("word in ger"); 
    list.add(item5); 
} 

#UPDATE 主代码

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.activity_two_fragment, container, false); 

     rv = (RecyclerView) view.findViewById(R.id.list_view_m); 
     rv.setHasFixedSize(true); 
     inputSearch = (EditText) view.findViewById(R.id.inputSearch); 

     mAdapter = new DataAdapter(list, getContext()); 
     rv.setAdapter(mAdapter); 
     InitData(); 

    return view; 
    } 
+0

请显示[mcve]。你的问题只需要1个项目,你应该显示列表的代码。 –

+0

请检查更新 –

+0

在创建适配器之前调用'InitData()'。 –

回答

1

第一顺序来告诉它如何显示的元素添加布局管理的RecyclerView。

其次,我建议initializate的数据会首先把它在适配器

rv = (RecyclerView) view.findViewById(R.id.list_view_m); 
rv.setHasFixedSize(true); 
//set a vertical layout so the list is displayed top down 
final LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false); 
rv.setLayoutManager(layoutManager); 

//initialize the data before binding it to the Adapter 
InitData(); 
mAdapter = new DataAdapter(list, getContext()); 
rv.setAdapter(mAdapter); 

从@Stefan的答案是正确的之前,您使用mAdapter.notifyDataSetChanged();你已经改变了列表的绑定到RecyclerView内容后,如果它有RecyclerView中的LinearLayoutManager,它就可以处理你的代码。

但是,在将其绑定到适配器之前,最好有一个完整(或部分)列表,以便RecyclerView显示来自开始的内容,并且在更改列表元素(添加,编辑或删除)后, ,请拨打mAdapter.notifyDataSetChanged();,以便RecyclerView自动更新显示。

+0

它的工作完美,但我不得不删除'mAdapter .notifyDataSetChanged();'部分,因为它给了我一个NullPointerException!现在一切正常,再次感谢 –

0

将数据添加到数据集后,你应该叫

adapter.notifyDataSetChanged(); 
+0

没有工作 –

+0

添加其余的代码请 – Stefan

+0

请检查更新 –