2011-11-13 4 views
0

私は自分のアダプタを定義するために複雑な行レイアウト(「2 imageViews、3 TextViews」)を持っています。私はクリック時にtextViewsの色を変更したい!私は内側のクラスの内部から参照されていない最終的な変数の問題に直面したこの問題の周りに任意のひねりがありますか?onclickメソッドの中から行の内容を変更する方法

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

    ViewHolder holder = new ViewHolder(); 

    if(convertView==null) 
    {  minflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = minflater.inflate(R.layout.list_item2, null); 


    holder.title = (TextView) convertView.findViewById(R.id.rowtext1); 
    holder.note = (TextView) convertView.findViewById(R.id.rowtext2); 
    holder.date = (TextView) convertView.findViewById(R.id.rowtext3); 
    holder.course= (TextView) convertView.findViewById(R.id.rowtext4); 
    holder.icon = (ImageView) convertView.findViewById(R.id.rowimage1); 
    holder.read = (ImageView) convertView.findViewById(R.id.rowimage2); 


    convertView.setOnClickListener(new OnClickListener() { 
     private int pos = position; 

     @Override 
     public void onClick(View v) { 
      numberOfClicks++; 
          // Heres the problem 
      holder.title.setTextColor(); 
      if(pos==0 && numberOfClicks % 2 ==1) 
       v.setBackgroundResource(R.drawable.stoprow); 
      else if (pos==0 && numberOfClicks % 2 !=1) 
       v.setBackgroundResource(R.drawable.toprow); 


      else if (pos==getCount()-1 && numberOfClicks % 2 !=1) 
       v.setBackgroundResource(R.drawable.bottomrow); 
      else 
       v.setBackgroundResource(R.drawable.smiddlerow); 
     } 
     }); 





     convertView.setTag(holder); 
     } else { 
     // Get the ViewHolder back to get fast access to the TextView 
     // and the ImageView. 
     holder = (ViewHolder) convertView.getTag(); 
     } 
+0

ドン」はさらに参考のために、このリンクを参照してください。匿名/インライン 'onClick'ハンドラを使用しないでください。あなたの 'Activity'が' OnClickListener'を実装してくれれば、それはもっと柔軟になります。 – Squonk

+0

私は多くのクリック可能な行がある場合!私はスイッチ文を使用しなければならないし、システムは1つのアイテムがクリックされるたびにそれを通過する必要がありますか?ここではgetViewの中で私のonclickを実装しています –

+0

XMLのアンドロイド:onClick属性を使って行レイアウトファイルに 'onClick'メソッドを設定することができますsee - http://developer.android.com/reference/android/view /View.html#attr_android:onClick - これを行うと、すべての 'クリック'が同じメソッドを呼び出すことになります。そして、はい、クリックしたものを処理するには 'View'を処理する必要があります。行数が多い場合、1つのリスナーを複数のリスナーよりも効率的に使用できます。 – Squonk

答えて

関連する問題