我在弄一个AppWidget的adapter ListView。问题是,我需要处理listView的item点击事件。设置一个悬而未决的意图模板setpendingintenttemplate()整个ListView和它的每一项setonclickfillinintent() fillinintent集。但现在,我点击ListView的item没有反应。我漏了什么了吗?
Intent intent2 = new Intent();
//TODO
intent2.setComponent(new ComponentName(context.getPackageName(), "HomeActivity"));
PendingIntent pendingIntentTemplate = PendingIntent.getActivity(context, 1, intent2, PendingIntent.FLAG_UPDATE_CURRENT);
//拼接PendingIntent
remoteViews.setPendingIntentTemplate(R.id.gridView1, pendingIntentTemplate);
Intent intent = new Intent();
//TODO
intent.setComponent(new ComponentName(mContext.getPackageName(), "HomeActivity"));
//与CustomWidget中remoteViews.setPendingIntentTemplate配对使用
rv.setOnClickFillInIntent(R.id.imageView1, intent);
rv.setImageViewResource(R.id.imageView1, R.drawable.on);
http://www.cnblogs.com/huangquanhj/archive/2013/03/22/2975135.html
当我点击ListView中的item时,没有反应,但item中的控件操作正常,查了很多网上的资料,了解到是button抢占了item的焦点问题,网上解决的办法基本上都是下面几种建议:
猜测原因:checkbox把焦点获取了,导致listview没有响应点击事件,
一般做法,在xml布局设置checkbox属性,其中focusable是关键:
android:focusable=”false” android:clickable=”false” android:focusableInTouchMode=”false”
如果ListView的item里面有button,方法类似于 checkbox
如果ListView的item里面有RatingBar/评分组件,利用上述的checkbox的xml属性设置是无效的。最好写个adapter,然后在adapter的getView中:
convertView = mInflater.inflate ( R.layout.list_item_text,null ); convertView.setClickable ( true ); convertView.setOnClickListener ( clickListener ); public OnClickListener myClickListener = new OnClickListener (){ public void onClick ( View v ){ //code to be written to handle the click event } };
4.在xml布局文件中所设置的:android:clickable="false"也是个关键。当为true时item即可被点击,有点击效果,可以试试。。