2013-12-21 61 views
1

我正在使用ListView處理此Android應用程序。我爲此創建了一個自定義適配器,並且我想要做的是在列表視圖的第一行(列表的項目0)中爲TextView設置onClickListener。只有這個項目的TextView應該有一個監聽器。但是當我把一個if或者switch語句放在手邊時,位置0處的行與位置2處的行共享這個位置,所以第二行中的textview也會得到一個監聽器。我有4行,所以行變成0,1,2而不是0,1,2,3。任何想法可能會造成這種情況?CustomListViewAdapter在getView()方法中使用if/switch語句時出現異常

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


     ViewHolder holder=null; 

     LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 

     if(convertView==null) 
     { 
      holder = new ViewHolder(); 

      convertView = mInflater.inflate(R.layout.contact_item, null); 

      holder.imageViewPhoto = (ImageView) convertView.findViewById(R.id.image); 
      holder.textViewName = (TextView) convertView.findViewById(R.id.namemain); 
      holder.textViewProfession= (TextView) convertView.findViewById(R.id.profession); 
      holder.textViewNumber = (TextView) convertView.findViewById(R.id.phone_number); 
      holder.imageViewFacebook = (ImageView) convertView.findViewById(R.id.facebook); 
      holder.imageViewTwitter = (ImageView) convertView.findViewById(R.id.twitter); 
      holder.imageViewGoogle= (ImageView) convertView.findViewById(R.id.google); 

      convertView.setTag(holder); 
     } 
     else{ 
      holder=(ViewHolder)convertView.getTag(); 
      Animation animation = new TranslateAnimation(0, 0, (position > lastPosition) ? 100 : -200, 0); 
      animation.setDuration(400); 
      convertView.startAnimation(animation); 
     } 

     Contact aContact = (Contact) getItem(position); 

     holder.textViewName.setText(aContact.getName()); 
     holder.imageViewPhoto.setImageResource(aContact.getImageNumber()); 
     holder.textViewProfession.setText(aContact.getProfession()); 
     holder.textViewNumber.setText(aContact.getCellNumber()); 
     holder.imageViewFacebook.setImageResource(aContact.getImageFb());  
     holder.imageViewTwitter.setImageResource(aContact.getImageTwt()); 
     holder.imageViewGoogle.setImageResource(aContact.getImageGoo()); 


     if(position==0){ 

       holder.textViewProfession.setGravity(0x11); 

       holder.textViewProfession.setOnClickListener(new View.OnClickListener() { 

        @Override 
        public void onClick(View v) { 

         Log.i("row"+getItemId(position)," "+position); 


        } 
       }); 

     } 


     lastPosition = position; 

     return convertView; 
    } 

回答

0
if(position==0){ 

       holder.textViewProfession.setGravity(0x11); 

       holder.textViewProfession.setOnClickListener(new View.OnClickListener() { 

        @Override 
        public void onClick(View v) { 

         Log.i("row"+getItemId(position)," "+position); 


        } 
       }); 

     } 
else{ 
       holder.textViewProfession.setGravity(0x11); 

       holder.textViewProfession.setOnClickListener(null); 
} 

如果使用viewHolder那麼它必須寫兩個情況下,如果和else爲TextView的妥善處理......請嘗試將工作只爲第零項...

+0

非常感謝它工作的人。我不知道這兩種情況都需要得到妥善處理 – tony

相關問題