滚动ListView会将颜色设置为不满足SimpleAdapter的getview方法中的条件的所有按钮

时间:2014-10-10 06:03:08

标签: android listview simpleadapter

我在Android中使用ListView实施了SimpleAdapter。我已在getView的{​​{1}}方法中设置了某些条件。

根据满意的条件,ListView每行中的SimpleAdapter将变为红色,绿色,黄色或橙色。

我遇到的问题是,当我连续向上和向下滚动ListView时,我可以看到一些不满足条件的按钮也在改变颜色,最后所有按钮都有上面提到的颜色。

有人能告诉我哪里出错了。我的代码如下:

Buttons

1 个答案:

答案 0 :(得分:0)

这取决于Listitems的重用。如果在if条件中更改背景:

 if (list_details_from_db.get(position)

您必须在else条件下将其设置为默认背景。

//修改

 @Override
            public View getView(final int position, View convertView,
                    ViewGroup parent) {
                // TODO Auto-generated method stub
                /*final*/ View v = super.getView(position, convertView,
                        parent);
                // Log.i("key values sub id in get view ",
                // ""+key_names);

                final TextView order_id = (TextView) v
                        .findViewById(R.id.order_id);
                Log.i("Order id check from getview ", order_id
                        .getText().toString());
                Button bt_waiter_id = (Button) v
                        .findViewById(R.id.bt_waiter_id);
                Button placed_id = (Button) v
                        .findViewById(R.id.placed_id);
                Button confirmed = (Button) v
                        .findViewById(R.id.confirmed);
                Button prepared = (Button) v
                        .findViewById(R.id.prepared);



                placed_id.setText("Your standard value");
                confirmed.setText("Your standard value");
                placed_id.setBackground(getResources()
                                        .getDrawable(
                                                R.drawable.your_standard_drawable));
                confirmed.setBackground(getResources()
                                        .getDrawable(
                                                R.drawable.your_standard_drawable));
                prepared.setBackground(getResources()
                                .getDrawable(
                                        R.drawable.your_standard_drawable));
                bt_waiter_id.setBackground(getResources()
                                .getDrawable(
                                        R.drawable.your_standard_drawable));
                bt_waiter_id.setText("your standard value");

                //
                //[...] Rest of your code

            }