【问题标题】:Android Change Background of Parent when Button in Child is clicked in Expandable ListView在可展开的 ListView 中单击子项中的按钮时,Android 更改父项的背景
【发布时间】:2014-01-08 13:31:35
【问题描述】:

我有一个显示消息的 ExpandableListView,在子视图中您可以看到文本和一个按钮来接受您已阅读的消息。 单击按钮时,我想更改父视图的背景颜色。

我使用了适配器,但我不知道如何在接受按钮的 onclick 方法中更改父视图。到目前为止,这是我的适配器:

     public class WarningAdapter extends BaseExpandableListAdapter {


    public ArrayList<Warning> mWarnings;
    public LayoutInflater minflater;
    public Fragment fragment;
    public Context context;


    public WarningAdapter(ArrayList<Warning> warnings){
        mWarnings = warnings;
    }

    public void setInflater(LayoutInflater mInflater, Fragment frag) {
        this.minflater = mInflater;
        fragment = frag;
    }

    @Override
    public Object getChild(int groupPosition, int childPosition) {
        // TODO Auto-generated method stub
        return mWarnings.get(childPosition);
    }

    @Override
    public long getChildId(int groupPosition, int childPosition) {
        // TODO Auto-generated method stub
        return childPosition;
    }

    @Override
    public View getChildView(int groupPosition, int childPosition,
            boolean isLastChild, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub

        TextView text = null;
        Button accept = null;
        Button delete = null;

        // TODO Auto-generated method stub
        if (convertView == null) {
            convertView = minflater.inflate(R.layout.warning_details, null);
        }
        text = (TextView) convertView.findViewById(R.id.tv_warning_text);
        accept = (Button) convertView.findViewById(R.id.btn_warning_accept);
        delete = (Button) convertView.findViewById(R.id.btn_warning_delete);


        accept.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                mWarnings.get(groupPosition).setIsRead(true);
            }
        });

        text.setText(mWarnings.get(groupPosition).getMessage());

        return convertView;
    }

    @Override
    public int getChildrenCount(int groupPosition) {
        // TODO Auto-generated method stub
        return 1;
    }

    @Override
    public Object getGroup(int groupPosition) {
        // TODO Auto-generated method stub
        return mWarnings.get(groupPosition);
    }

    @Override
    public int getGroupCount() {
        // TODO Auto-generated method stub
        return mWarnings.size();
    }

    @Override
    public long getGroupId(int groupPosition) {
        // TODO Auto-generated method stub
        return groupPosition;
    }

    @Override
    public View getGroupView(int groupPosition, boolean isExpanded,
            View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub

        TextView subject = null;
        TextView date = null;
        ImageView category = null;
        LinearLayout background = null;


        if (convertView == null) {
            convertView = minflater.inflate(R.layout.warning_head, null);
        }
        subject = (TextView) convertView.findViewById(R.id.tv_warning_subject);
        date = (TextView) convertView.findViewById(R.id.tv_warning_date);
        category = (ImageView) convertView.findViewById(R.id.img_warning_category);
        background = (LinearLayout) convertView.findViewById(R.id.Layout_warning_head);

        subject.setText(mWarnings.get(groupPosition).getCategory()+"sub");
        date.setText(mWarnings.get(groupPosition).getEntryDate()+"date");
        category.setImageResource(R.drawable.ic_launcher);

if(mWarnings.get(groupPosition).getIsRead()){
            background.setBackgroundColor(Color.TRANSPARENT);           
        }

        return convertView;
    }

    @Override
    public boolean hasStableIds() {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        // TODO Auto-generated method stub
        return false;
    }

    }  

编辑:我找到了一些方法来获得它,但它不是我想要的。只有当我第二次单击父级以折叠它时,背景才会改变。 另一种尝试是在 onClick 方法中调用 getGroupView,但我无法让它工作。

【问题讨论】:

    标签: android listview


    【解决方案1】:

    你可以试试:

    parent.setBackgroundColor(color);
    

    【讨论】:

    • 不,这不起作用。如果我想在 onclick 的内部类中使用父级,我必须使它成为最终的。即使那样它也不起作用。
    猜你喜欢
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多