2015-01-15 3 views
0

나는 다음과 같이 RecyclerView을 동적으로 생성했습니다. 클릭 한 항목을 클릭하면서 강조하고 싶습니다. 클릭 후 다음 Activity으로 이동합니다. 아래 배경 XML을 받았습니다 :RecyclerView 클릭시 강조 표시

hRecyclerView.setBackgroundResource(R.drawable.mylistview_background); 

설정 방법이 아닌가요? 내가 여기서 뭘해야하지? 어떤 도움이 많이 감사합니다

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true"> 
     <shape> 
      <gradient android:endColor="#22000000" android:startColor="#a7a2288f" android:angle="270" /> 
     </shape> 
    </item> 

    <item android:state_focused="true"> 
     <shape> 
      <gradient android:endColor="#2200ff00" android:startColor="#a2008f00" android:angle="270" /> 
     </shape> 
    </item> 


</selector> 

 hRecyclerView = (RecyclerView) findViewById(R.id.my_history_view); 

     // use a linear layout manager 
     hLayoutManager = new LinearLayoutManager(this); 
     hRecyclerView.setLayoutManager(hLayoutManager); 
     hRecyclerView.setVerticalScrollBarEnabled(false); 
     hRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL_LIST)); 
     hRecyclerView.setBackgroundResource(R.drawable.mylistview_background); 
    hAdapter = new HistoryAdapter(history, this); 
     hRecyclerView.setAdapter(hAdapter); 


     hRecyclerView.addOnItemTouchListener(
       new RecyclerItemClickListener(context, new RecyclerItemClickListener.OnItemClickListener() { 
        @Override 
        public void onItemClick(View view, int position) { 
         // do whatever 
         if(position>0) { 
          History his = history.get(position - 1); 
          Intent intent = new Intent(getApplicationContext(), TrackActivity.class); 
          intent.putExtra("from", his.src_station); 
          intent.putExtra("to", his.dest_station); 
          intent.putExtra("train_no", his.train_no); 
          intent.putExtra("train_name", his.train_name); 
          startActivity(intent); 
          overridePendingTransition(R.anim.right_in, R.anim.left_out); 

         } 
        } 
       }) 
     ); 

     hRecyclerView.setItemAnimator(new DefaultItemAnimator()); 

mylistview_background.xml!

+0

당신이 클릭 이벤트를 처리하기 위해 ViewHolder 클래스에 onClickListenner를 사용하지 않는 이유가 있습니까 ? 어제 많은 시간을 들여 이러한 경우에 가장 적합한 솔루션을 제시했으며 나에게도 그렇게 쉬운 방법이었습니다. 내가 모르는 뭔가가 있으면 알려주세요. – Ced

답변

0

전체 RecyclerView의 배경을 설정하고 있습니다 ('선택되지 않음'). 행 뷰의 배경을 설정해야합니다. HistoryAdapter의 onCreateViewHolder에서 행 뷰가 팽창됩니다. THAT은 선택기 드로어 블이 필요한 배경입니다 (xml 또는 코드로 설정할 수 있음).

0
hRecyclerView.setBackgroundResource(R.drawable.mylistview_background); 

먼저이 줄을 삭제하십시오. 전체 recyclerview입니다.

귀하의 사용자 정의 행/항목 레이아웃 (드로어 블 폴더에 mylistview_background.xml을 넣어)과 같아야합니다

<RelativeLayout ... 
    android:background="@drawable/mylistview_background">... 
</RelativeLayout> 
관련 문제