2017-03-01 26 views
1
public void setDataToList() { 
    liveTvAdapter = new LiveTvAdapter(this, channelList); 
    horizonatalListViewForLiveTv.setAdapter(liveTvAdapter); 

    horizonatalListViewForLiveTv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

      TextView textView; 

      for (int i = 0; i < parent.getChildCount(); i++) { 
       if (position == i) { 
        textView = (TextView) parent.getChildAt(i).findViewById(R.id.live_tv_chanel_text); 
        textView.setTextColor(Color.parseColor("#63a0b9")); 
       } else { 
        textView = (TextView) parent.getChildAt(i).findViewById(R.id.live_tv_chanel_text); 
        textView.setTextColor(Color.BLACK); 
       } 
      } 

      if (videoView != null) { 
       videoView = null; 
      } 
      setValue(position); 


     } 

    }); 
} 

これは私がやっているコードの上です。ここで私は位置から親子からtextviewを取得しています。このコードでは、3番目または4番目のアイテムをクリックすると、他のアイテムに色付けされていても、アイテムは着色されません。お使いのアダプタのonClickインサイドリストビューの項目をクリックしたときにリストビューのテキストに色を付けることができます。他の項目をクリックしたときに、前の項目がデフォルトの色になるはずです

+0

上記のロジックを使用することはできますが、これは正しい方法ではありませんが遅くなる可能性があります。私は上記に比べて速い正しい方法を投稿した。 – vishal

答えて

0

notifyItemChanged(oldPosition)を使用することができます。私は、このようにそれをやった: -

は、最初のiは

public void setSelectedIndex(int ind) { 
      selectedIndex = ind; // selectedIndex global variable 
      notifyDataSetChanged(); 
     } 

public View getView(final int position, View convertView, ViewGroup parent) { 
      ViewHolderForLiveTV holderForLiveTV; 
if (selectedIndex != -1 && position == selectedIndex) { 
       holderForLiveTV.channelName.setTextColor(Color.parseColor("#63a0b9")); 
      } else { 
       holderForLiveTV.channelName.setTextColor(Color.BLACK); 
      } 
return convertView; 
} 

よりも、私のアダプタでの方法を作った後、私はこの方法のように選択した項目の位置を設定します -

liveTvAdapter.setSelectedIndex(position); 
1

あなたは私が答えを見つけ

https://developer.android.com/reference/android/support/v7/widget/RecyclerView.Adapter.html#notifyItemChanged(int, java.lang.Object) 
関連する問題