繁体   English   中英

自定义ListView更改项目颜色

[英]Custom ListView changing item color

我有一个带有自定义适配器的ListView ,我想更改项目的背景颜色。 我使用以下代码:

 @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        final Holder holder = new Holder();
        final View rowView;
        rowView = inflater.inflate(R.layout.program_list, null);
        holder.tv = (TextView) rowView.findViewById(R.id.textView1);
        holder.img = (ImageView) rowView.findViewById(R.id.imageView1);
        holder.tv.setText(result[position]);
        holder.img.setImageResource(imageId[position]);
        rowView.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (position != 0) {
                    rowView.setBackgroundColor(Color.rgb(70, 190, 200));
                }
            }
        });
        return rowView;
    }

它工作正常,但是我的问题是-我如何才能在onclick函数中更改下一个项目的颜色,同时知道最后一个项目不会被按下(导致超出范围的错误)? (如果我在位置4处按项目,则更改位置5的背景色)。

          rowView.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
            // ?
            }
        });

谢谢 :)

如果在适配器myListView声明为成员变量,并在getView方法中将其初始化为

this.myListView = (ListView) parent;

然后您可以通过以下方式在onClick方法中获得当前选定项目的位置:

int currPos = MyCustomAdapter.this.myListView(getPositionForView((View) view.getParent()));

到目前为止,我自己使用了此代码,并且可以正常工作。 现在,根据Android Javadoc,以下表达式将产生下一个视图:

MyCustomAdapter.this.myListView(getChildAt(currPos + 1)).

然后,您应该可以使用该视图进行任何操作,但是我尚未测试这部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM