首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >视图持有者OnClickListener事件问题

视图持有者OnClickListener事件问题
EN

Stack Overflow用户
提问于 2014-03-11 14:29:43
回答 4查看 10.7K关注 0票数 4

我正在创建一个带有视图持有者的listview适配器:

final ViewHolder holder;
if (convertView == null) {
     convertView = layoutInflater.inflate(R.layout.activity_list_layout, null);
     holder = new ViewHolder();
     //Layout Code here
     convertView.setTag(holder);
}
else {
     holder = (ViewHolder) convertView.getTag();
}

设置Onclick监听器:

 holder.view.setOnClickListener(titleListener);
 final OnClickListener titleListener = new OnClickListener() {
         @Override
         public void onClick(View v) {
          holder.view.setBackgroundResource(R.drawable.top_bar);
          notifyDataSetChanged();

          }
     };

在Onclick listner中,我更改了所选视图的背景图像。但在这里,对于选定的项目,对于同一列表视图中的其他项目,背景图像正在发生变化。请建议我需要做哪些修改才能仅为所选项目更改BG。

更新了getview的代码:

final ViewHolder holder;        

if (convertView == null) {
            convertView = layoutInflater.inflate(
                    R.layout.activity_news_list_layout, null);
            holder = new ViewHolder();
            holder.title = (TextView) convertView.findViewById(R.id.title);
            holder.image = (ImageView) convertView
                    .findViewById(R.id.thumbImage);
            holder.view = (RelativeLayout) convertView.findViewById(R.id.tView);
            holder.opacityView = (View) convertView
                    .findViewById(R.id.opacity_view);

            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

holder.view.setOnClickListener(titleListener);
 final OnClickListener titleListener = new OnClickListener() {
         @Override
         public void onClick(View v) {
          holder.view.setBackgroundResource(R.drawable.top_bar);
          notifyDataSetChanged();

          }
     };

 holder.view.setOnClickListener(titleListener);
        return convertView;

请检查图像,我选择了行“这个迪拜社区”,但背景也改变了“我很有信心”。还有一些在单击事件中选择的其他行

EN

回答 4

Stack Overflow用户

发布于 2014-03-11 14:43:07

尝尝这个

holder.view.setOnClickListener(titleListener);
final OnClickListener titleListener = new OnClickListener() {
     @Override
     public void onClick(View v) {
      Drawable drawable = res.getDrawable(R.drawable.newImage); //new Image 
      holder.view..setBackgroundDrawable(drawable);
      notifyDataSetChanged();

      }
 };
票数 1
EN

Stack Overflow用户

发布于 2014-03-11 14:45:14

Relativelayout rlayout=holder.view;

请添加上行...

holder.view.setOnClickListener(titleListener);
 final OnClickListener titleListener = new OnClickListener() {
         @Override
         public void onClick(View v) {
          rlayout.setBackgroundResource(R.drawable.top_bar);
          notifyDataSetChanged();

          }
     };
票数 1
EN

Stack Overflow用户

发布于 2014-03-11 14:49:58

单击时使用选择器选择任何行:

list_selector.xml:

<?xml version="1.0" encoding="utf-8"?>

<item android:drawable="@color/android:on_press" android:state_enabled="true" android:state_pressed="true"/>
<item android:drawable="@color/android:activated_drawble" android:state_activated="true" android:state_focused="true"/>
<item android:drawable="@color/android:normal_drawble"/>

创建此xml并在列表行的后台应用。

然后在单击持有者视图时对其应用setActivated(true)。就是这样。这是实现选择器的正确方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22318068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档