1

このアイテム内の特定のボタン(レイアウト)が押されると、リストビュー内の単一のアイテムのコンテンツを変更しようとしています。私はアダプタでそれをしようとしている方法を以下に書きました。

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");
}

また、onButtonClicked() メソッドの最後に「notifyDataSetChanged()」を配置しようとしましたが、役に立ちませんでした。デバッグを通じて、ボタンをクリックすると onButtonlicked() メソッドが呼び出されていることがわかります。

編集:ViewHolderを使用して機能させ、ボタンのタグとして設定し、onButtonClicked();にパラメーターとして渡しました。

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

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

1 に答える 1

0

アイテムのコンテンツを変更するメソッドをアダプターに作成し、notifyDataSetChanged を使用してアダプターを更新します。

于 2014-12-22T16:45:17.563 に答える