2016-12-27 10 views
0

カスタムアダプタを使用したリストビューがあり、最初のアイテムをクリックするとリストビューの下のボタン(「次へ」)が表示され、最初のアイテムのアイテムのテキストの色が変更されます ボタン次の私はありがとう助けてください。次の行項目のテキストの色を変更したい。リストビューボタンのアイテムテキストの色を変更する

mainListViews.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 

    itemPosition =i; 
      String text = textView.getText().toString(); 
      Toast.makeText(getContext(), "Selected item: " + text + " - " + i, Toast.LENGTH_SHORT).show(); 

      song_namef.setText(text); 

      playSong(i); 
      hello.setVisibility(View.VISIBLE); 

      setItemNormal(); 
      View rowView = view; 
      setItemSelected(rowView); 

     } 
    }); 
public void setItemSelected(View view){ 
    View rowView = view; 
    TextView tv = (TextView)rowView.findViewById(R.id.textView); 
    tv.setTextColor(Color.WHITE); 
} 

public void setItemNormal() 
{ 
    for (int i=0; i< mainListViews.getChildCount(); i++) 
    { 
     View v = mainListViews.getChildAt(i); 
     TextView txtview = ((TextView)v.findViewById(R.id.textView)); 
     txtview.setTextColor(getResources().getColor(R.color.tabsScrollColor)); 
    }} 
hello.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View view) { 
    Toast.makeText(getContext(),"Next",Toast.LENGTH_SHORT).show(); 

       itemPosition=itemPosition+1; 
here i want to color next row of item text 
}}); 

getViewメソッド

public View getView(final int position, View convertView, ViewGroup viewGroup) { 

     val = position; 
     viewHolder = null; 

     if (convertView == null) { 
      viewHolder = new ViewHolder(); 
      LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

      convertView = layoutInflater.inflate(R.layout.list_items, viewGroup, false); 

      // Find the child views. 
      viewHolder.country = (TextView) convertView.findViewById(R.id.textView); 
      viewHolder.cancel = (ImageView)convertView.findViewById(R.id.button); 



      convertView.setTag(viewHolder); 
      // convertView.setTag(vh); 
     } 
     else { 
      viewHolder = (ViewHolder) convertView.getTag(); 
      //vh = (ViewHolder)vi.getTag(); 
     } 
     String hello = countryList.get(position); 
     Log.d("Hello",hello); 


     viewHolder.country.setText(hello.substring(18)); 

答えて

1

まず第一にselector.xml

を作成10
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_selected="true" android:color="@color/black" /> 
<item android:state_focused="true" android:color="@color/black" /> 
<item android:state_pressed="true" android:color="@color/black" /> 
<item android:color="@color/white" /> 
</selector> 

その後リストの項目のレイアウトにとしてtextColor属性を定義します。

android:textColor="@color/list_item_text" 
+0

これはリストアイテムのビューです。ボタンをクリックしてもリストビューの行を呼び出すことはできません。 –

+0

@SumitKumarクリックすると、毎回リストの行項目のインデックスがインクリメントされ、カラーコードが実装されます。 –

+0

いくつかのコードで説明できますか?お願いします !! –

1

はこれを試してみてください。助け

hello.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     Toast.makeText(getContext(),"Next",Toast.LENGTH_SHORT).show(); 
     itemPosition = itemPosition + 1; 

     setItemNormal(); 
     // check if the next view is visible on screen, then change color 
     if(itemPosition <= mainListViews.getLastVisiblePosition()){ 
      View rowView = mainListViews.getChildAt(itemPosition - mainListViews.getFirstVisiblePosition()); 
      setItemSelected(rowView); 
     } 
}}); 

願っています!

ところで、リストをスクロールするとビューが再描画されるため、ビューを直接変更するのは悪いです。あなたのリストが長い場合は、コードを確認してください。また、変数には適切な名前が与えられている。 "hello" - > "btnNext"は、他の人があなたのコードを理解し、解決策を提案するのに役立ちます。

関連する問題