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;
}
非常感謝它工作的人。我不知道這兩種情況都需要得到妥善處理 – tony