2011-11-13 46 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

別t使用匿名/內聯'onClick'處理程序。讓你的'Activity'實現'OnClickListener',它使事情變得更加靈活。 – Squonk

+0

如果我有很多可點擊的行,該怎麼辦!我是否必須使用switch語句,並且每次點擊一個項目時系統都應該通過它?在這裏,我正在實施我的onclick getView –

+0

您可以使用XML android android onClick屬性在行佈局文件中設置onClick方法請參閱http://developer.android.com/reference/android/view /View.html#attr_android:onClick - 這樣做意味着所有'點擊'都會觸發相同的方法....並且是的,您需要修改'View'來確定哪個點擊過。有很多行,讓我有一個聽衆比很多人更有效率。 – Squonk

回答