2016-09-08 2 views
0

나는 RecyclerView 안에 뷰가있는 CardView를 가지고 있습니다. 애셋이 뷰에 첨부되고 모든 것이 작동하는 어댑터를 만들었습니다. 이제, 나는이 활동들을 나의 활동에서 바꾸고 싶다. 그렇게하는 것이 간단한 방법일까요?활동에서 CardView 내의 뷰에 대한 참조를 얻는 방법은 무엇입니까?

public class MainActivity extends AppCompatActivity { 

    RecyclerView recyclerView; 
    private RecyclerView.LayoutManager layoutManager; 
    private List<Offer>offers; 
    TextView timer; //timer inside CardView 

    private void getViewReferences() { 
     recyclerView = (RecyclerView)findViewById(R.id.mainRecyclerView); 
     timer = (TextView)findViewById(R.id.timer); 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     getViewReferences(); 
     layoutManager = new LinearLayoutManager(this); 
     recyclerView.setLayoutManager(layoutManager); 
     initializeData(); 
     initializeAdapter(); 
     timer.setText("13:16"); //NullPointerException here 

    } 
    private void initializeData(){ 
     offers = new ArrayList<>(); 
     offers.add(new Offer("godzina", R.drawable.zdj, 200)); 
     offers.add(new Offer("godzina", R.drawable.zdj)); 

    } 
    private void initializeAdapter() { 
     RecyclerViewAdapter adapter = new RecyclerViewAdapter(offers); 
     recyclerView.setAdapter(adapter); 
    } 



} 
+0

보기가 어떤 변화를 의미하는지 예를 들려 줄 수 있습니까? – masp

+0

initializeData()의 @masp 기본 문자열 "godzina"가 초기화되고 initializeAdapter()에서 TextView가이 값을 가져 오는 어댑터로 보내고 있습니다. 이 작업이 끝나면 Activity에서 TextView의 텍스트를 변경하고 싶습니다. 예 : "godzina"-> "string". –

답변

0

그래서보기를 변경하고 싶지 않지만 목록의보기의 텍스트 값을 업데이트하려고합니다.

recyclerView에서 뷰를 찾고 텍스트를 변경하여 직접 할 수는 없습니다. 어댑터는 목록에 값을 제공 할 책임이 있습니다. 따라서 어댑터의 데이터 집합을 업데이트하고 어댑터의 notifyDataSetChanged 메서드 중 하나를 호출하여 recyclerView를 업데이트해야합니다.

이 디자인의 가장 큰 장점은 뷰를 캐시에 배치하면 다시 뷰어를 부 풀리지 않고 여러 번 재사용 할 수 있기 때문입니다. 이것은 엄청난 성능 향상입니다.

어댑터 디자인 패턴을 더 잘 이해하려면 docs 및 일부 자습서를 읽어야합니다.

+0

그게 내가 생각한거야. 도와 줘서 고마워. –

관련 문제