11package org .evilbinary .tv ;
22
33import android .app .Activity ;
4+ import android .content .Context ;
45import android .os .Bundle ;
56import android .support .v7 .widget .GridLayoutManager ;
67import android .support .v7 .widget .LinearLayoutManager ;
78import android .support .v7 .widget .RecyclerView ;
89import android .util .Log ;
910import android .view .View ;
11+ import android .widget .Toast ;
1012
1113import org .evilbinary .tv .widget .BorderView ;
1214
1719public class DemoMenuActivity extends Activity {
1820 private BorderView border ;
1921
20-
22+ private Context mContext ;
2123 private String mCategory [] = new String []{"全部频道" , "美食" , "休闲娱乐" , "购物" };
2224 //二级列表数据
2325 private String mDatas [][] = new String [][]{
@@ -30,32 +32,65 @@ public class DemoMenuActivity extends Activity {
3032
3133 private MyAdapter secondAdapter ;
3234 private View lastFocus = null ;
35+ private View lastSubFocus = null ;
36+
37+ private RecyclerView secondRecyclerView ;
38+ private GridLayoutManager layoutManager2 ;
3339
3440 @ Override
3541 protected void onCreate (Bundle savedInstanceState ) {
3642 super .onCreate (savedInstanceState );
3743 setContentView (R .layout .demo_menu );
38-
44+ mContext = this ;
3945
4046 border = new BorderView (this );
4147 border .setBackgroundResource (R .drawable .border_red );
4248
4349 RecyclerView firstRecyclerView = (RecyclerView ) findViewById (R .id .firstRecyclerView );
44- RecyclerView secondRecyclerView = (RecyclerView ) findViewById (R .id .secondRecyclerView );
50+ secondRecyclerView = (RecyclerView ) findViewById (R .id .secondRecyclerView );
4551
4652 GridLayoutManager layoutManager = new GridLayoutManager (this , 1 );
4753 layoutManager .setOrientation (LinearLayoutManager .VERTICAL );
4854 firstRecyclerView .setLayoutManager (layoutManager );
4955 firstRecyclerView .setFocusable (false );
5056
5157
52- GridLayoutManager layoutManager2 = new GridLayoutManager (this , 1 );
58+ layoutManager2 = new GridLayoutManager (this , 1 );
5359 layoutManager2 .setOrientation (LinearLayoutManager .VERTICAL );
5460 secondRecyclerView .setLayoutManager (layoutManager2 );
5561 secondRecyclerView .setFocusable (false );
5662
5763
58- secondAdapter = new MyAdapter (this , new String []{}, R .layout .item_menu_sub );
64+ secondAdapter = new MyAdapter (this , new String []{}, R .layout .item_menu_sub , new View .OnFocusChangeListener () {
65+ @ Override
66+ public void onFocusChange (View v , boolean hasFocus ) {
67+
68+ if (hasFocus ) {
69+ if (lastSubFocus != null )
70+ lastSubFocus .setBackgroundResource (R .drawable .list_item_shape );
71+ lastSubFocus = v ;
72+ v .setBackgroundResource (R .drawable .shape );
73+
74+ }
75+
76+ }
77+ });
78+ secondAdapter .setOnBindListener (new MyAdapter .OnBindListener () {
79+ @ Override
80+ public void onBind (View view , int i ) {
81+ Log .d ("tt" , "onBind===>" + i );
82+
83+ if (lastSubFocus == null ||((int )lastSubFocus .getTag ())==i ) {
84+ view .setBackgroundResource (R .drawable .shape );
85+ lastSubFocus = view ;
86+ }else {
87+ view .setBackgroundResource (R .drawable .list_item_shape );
88+
89+ }
90+ view .setOnClickListener (onClickListener );
91+
92+ }
93+ });
5994 secondRecyclerView .setAdapter (secondAdapter );
6095
6196
@@ -64,32 +99,51 @@ protected void onCreate(Bundle savedInstanceState) {
6499 @ Override
65100 public void onFocusChange (View v , boolean hasFocus ) {
66101 if (hasFocus ) {
102+ if (v != lastFocus )
103+ lastSubFocus = null ;
104+
67105 int pos = (int ) v .getTag ();
68106 secondAdapter .setData (mDatas [pos ]);
69107 secondAdapter .notifyDataSetChanged ();
70- Log .d ("tt" , "onFocusChange===>" + pos );
71108
72- if (lastFocus !=null )
109+ Log .d ("tt" , "onFocusChange===>" + pos );
110+ if (lastFocus != null )
73111 lastFocus .setBackgroundResource (R .drawable .list_item_shape );
74112 lastFocus = v ;
75113 v .setBackgroundResource (R .drawable .shape );
114+ }
76115
77116
78- } else {
79- //v.setBackgroundColor(Color.RED);
80- }
117+ }
118+ });
119+ adapter .setOnBindListener (new MyAdapter .OnBindListener () {
120+ @ Override
121+ public void onBind (View view , int i ) {
122+ view .setOnClickListener (onClickListener );
81123 }
82124 });
83125 // 设置Adapter
84126 firstRecyclerView .setAdapter (adapter );
85127 firstRecyclerView .scrollToPosition (0 );
86128
129+
87130 border .getEffect ().setScalable (false );
131+ border .getEffect ().setEnableTouch (false );
88132 border .attachTo (firstRecyclerView );
89133 border .attachTo (secondRecyclerView );
90134
91135
92136 }
93137
138+ private View .OnClickListener onClickListener = new View .OnClickListener () {
139+ @ Override
140+ public void onClick (View v ) {
141+ int pos = (int ) v .getTag ();
142+ String tip = "click===" + pos ;
143+ Toast .makeText (mContext , tip , Toast .LENGTH_SHORT ).show ();
144+ v .setFocusableInTouchMode (true );
145+ v .requestFocus ();
146+ }
147+ };
94148
95149}
0 commit comments