簡體   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