我真的需要這一點幫助,因爲在我的應用程序不能正常工作的唯一的東西。 我有被擴大BaseAdapter適配器管理列表視圖。Android的onClick事件不觸發
在使用convertView建立OnClickListener的getview功能IM。 這OnClickListener工作得很好,當我觸摸屏幕,但如果我使用的HTC Desire的軌跡球,我看到了排在屏幕上閃爍,但OnClickListener不叫......
我讀過了Android開發指南:http://developer.android.com/guide/topics/ui/ui-events.html 和它的說,我應該從軌跡球收到一個onClick事件...
我把這裏我的getview代碼,以防有人看到任何奇怪的東西。如果您對我能做什麼有所瞭解,請告訴我。
public View getView(int position, View convertView, ViewGroup parent) {
//ici on va utiliser un mécanisme de cache avec le Tag Holder
MyTag holder;
if (convertView == null){
//On se branche sur le bon layout
// convertView = inflater.inflate(android.R.layout.simple_list_item_2, null)
convertView = inflater.inflate(R.layout.twolines, null);
holder = new MyTag();
//on récupère les éléments du layout dans le holder
holder.txtData = (TextView)convertView.findViewById(R.id.productTitle);
holder.txtExtra = (TextView)convertView.findViewById(android.R.id.text2);
holder.imgScreenshot = (ImageView)convertView.findViewById(R.id.Screenshot);
holder.imgFlag = (ImageView)convertView.findViewById(R.id.Flag);
//holder.mLoginButton = (LoginButton) convertView.findViewById(R.id.login);
holder.mPostButton = (ImageView) convertView.findViewById(R.id.postButton);
//sauvegarde du holder
convertView.setTag(holder);
} else {
holder = (MyTag)convertView.getTag();
}
//Facebook post button management
holder.mPostButton.setOnClickListener((OnClickListener) new OnPostClickListener(convertView.getContext(),mFacebook, Long.toString(data[position].videoId), data[position].title, data[position].publisher, data[position].imageUrl));
holder.mPostButton.setImageResource(com.cedemo.scan.utils.getPostButtonResId());
//data update
if(data[position].title != null)
holder.txtData.setText(data[position].title);
if(data[position].publisher != null)
holder.txtExtra.setText(data[position].publisher);
//get and set the language flag
if(data[position].language != null)
holder.imgFlag.setImageResource(com.cedemo.scan.utils.getFlag(data[position].language));
//set the screenshot
if(data[position].myVideoScreenshotBm != null)
holder.imgScreenshot.setImageBitmap(data[position].myVideoScreenshotBm);
/* =================================================================
THIS FUNCTION IS NOT CALLED WHEN I CLICK ON THE TRACKBALL
BUT IS CALLED WHEN I TOUCH THE SCREEN.
WHEN I USE THE TRACKBALL THE SELECTED ROW IS FLASHING ONCE.
================================================================= */
//set the click mechanic if there is a valid video url
if(data[position].url != null) {
convertView.setOnClickListener((OnClickListener) new OnProductClickListener(position));
}
return convertView;
}
你實際使用軌跡球點擊項目,或者只是滾動了他們嗎? – Jwsonic 2010-09-20 13:22:03
滾動,然後點擊。 – Fabien 2010-09-22 11:56:02