【问题标题】:How do I dynamically change the content of a item layout inside a listview?如何动态更改列表视图中项目布局的内容?
【发布时间】:2014-12-22 16:41:41
【问题描述】:

我正在尝试更改列表视图中单个项目的内容,一旦按下该项目内的某个按钮(即布局)。我在下面写了我是如何尝试在适配器中做到这一点的。

View mCurrentConvertView;

@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
    if (convertView == null) {
        convertView = (LinearLayout) LayoutInflater.from(parent.getContext()).inflate(R.layout.the_list_view_item_layout, parent, false);
    }

    mCurrentConvertView = convertView;

    ((TextView) convertView.findViewById(R.id.description)).setText("A Text");

    ((Button) convertView.findViewById(R.id.button)).setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                onButtonClicked(mCurrentConvertView);
            }
        });

    return convertView;
}

private void onButtonClicked (View mCurrentConvertView) {
    ((TextView) mCurrentConvertView.findViewById(R.id.description)).setText("A Different Text");
}

我还尝试将“notifyDataSetChanged()”放在 onButtonClicked() 方法的末尾,但无济于事。通过调试,我知道点击按钮时正在调用onButtonlicked()方法。

编辑:我设法使用 ViewHolder 使其工作,将其设置为按钮的标记,并将其作为参数传递给 onButtonClicked();

public void onClick(View v) {
    onButtonClicked((ViewHolder) v.getTag());
}

private void onButtonClicked (ViewHolder holder) {
    holder.description.setText("A Different Text");
}

【问题讨论】:

    标签: java android listview adapter android-viewholder


    【解决方案1】:

    在您的适配器中创建一个方法来更改项目的内容,并使用 notifyDataSetChanged 刷新适配器。

    【讨论】:

    • 谢谢,但我设法使用 ViewHolder 使其工作,将其设置为按钮的标签,并将其作为参数传递给 onButtonClicked();我编辑了带有解释的原始评论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 2023-03-20
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    • 2015-12-18
    相关资源
    最近更新 更多