android - OnItemClick 和项目 View

标签 android listview view onitemclick

我实际上面临着一个我不知道如何解决的问题......

其实我是想在listView上点击的时候改变颜色显示一张图片。

问题是当我单击我的第一个项目时,第 0、第 9、第 18 等...也发生变化...就像 View onItemClick 只占用 ListView 的可见部分(显示的项目,没有滚动)

不知道怎么解决。

我的适配器:

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

        ViewHolder holder = null;

        LayoutInflater mInflater = (LayoutInflater) context
                .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        if (convertView == null) {

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

            holder = new ViewHolder();

            holder.txtTitre = (TextView) convertView
                    .findViewById(R.id.titre);

            holder.img = (ImageView) convertView
                    .findViewById(R.id.img);

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

        final AnomalieRowItem rowItem = (AnomalieRowItem) getItem(position);

        holder.txtTitre.setText(rowItem.getLibelle());

        if (position % 5 == 0) {
            holder.img.setBackgroundColor(0xffED695A);
        } else {
            if (position % 4 == 0) {
                holder.img.setBackgroundColor(0xffEB5443);
            } else {
                if (position % 3 == 0) {
                    holder.img.setBackgroundColor(0xffEA4735);
                } else {
                    if (position % 2 == 0) {
                        holder.img.setBackgroundColor(0xffE93825);
                    } else {
                        holder.img.setBackgroundColor(0xffD52815);
                    }
                }
            }
        }

        return convertView;
    }

我的听众:

 private void initListener() {
        m_ListeAnomalie.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                AnomalieRowItem item = m_ListeItem.get(position);

                ImageView imgCheck = (ImageView) view.findViewById(R.id.check);
                LinearLayout layout = (LinearLayout) view.findViewById(R.id.item);

                if (item.isChecked()) {
                    layout.setBackgroundColor(0xffefefef);
                    item.setChecked(false);
                    imgCheck.setVisibility(View.GONE);
                } else {
                    layout.setBackgroundColor(0xffdddddd);
                    item.setChecked(true);
                    imgCheck.setVisibility(View.VISIBLE);
                }

                m_Adapter.notifyDataSetChanged();
            }
        });

        m_Valider.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                end();
            }
        });
    }

谢谢你的帮助

编辑:带有模数和背景的部分工作正常,我的问题出在监听器中,好像它不是在 OnItemClick 函数中注入(inject)的正确 View

EDIT 2:有图片,我觉得更好

Android problem when OnItemClick

最佳答案

if (position % 5 == 0) {
            holder.img.setBackgroundColor(0xffED695A);
        } else {
            if (position % 4 == 0) {
                holder.img.setBackgroundColor(0xffEB5443);
            } else {
                if (position % 3 == 0) {
                    holder.img.setBackgroundColor(0xffEA4735);
                } else {
                    if (position % 2 == 0) {
                        holder.img.setBackgroundColor(0xffE93825);
                    } else {
                        holder.img.setBackgroundColor(0xffD52815);
                    }
                }
            }
        }
// add this lines in getView() after above logic.
if (rowItem.isChecked()) {
                    layout.setBackgroundColor(0xffefefef);
                    imgCheck.setVisibility(View.GONE);
                } else {
                    layout.setBackgroundColor(0xffdddddd);
                    imgCheck.setVisibility(View.VISIBLE);
                }

关于android - OnItemClick 和项目 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24284702/

相关文章:

android - 运行 AVD 时出错

java - 您必须为 TextView 错误提供资源 ID

java - 如何在 ListView 中保存每个项目的评分?

c# - 在 ListView 中选择子项并更改值

c# - ListView 在 List 模式下的动态列宽,如 Windows 7 中的资源管理器

ruby-on-rails - 从 View 设置标题状态

Android init.rc : unable to Create Symbolic Links

android - CameraPosition 不适用于 setPadding

android - 如何在视频上设置媒体 Controller ?

javascript - onAfterRendering 在加载数据 View 之前调用,使用工厂