如何在ListViewAdapter中返回值

时间:2019-05-16 01:44:30

标签: android

我使用startActivityForResult方法启动了名为CarrierSelectActivity的Activity。并且该活动具有一个ListView,该ListView绑定到CarrierSelectListAdapter。

我认为可以使用context.setResult(intent);来解决。但是上下文没有setResult()方法

这是CarrierSelectListAdapter中的getView()。

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    final int pos = position;
    final Context context = parent.getContext();

    // "listview_item" Layout을 inflate하여 convertView 참조 획득.
    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.item_select_carriers, null);
    }

    // 화면에 표시될 View(Layout이 inflate된)으로부터 위젯에 대한 참조 획득
    ConstraintLayout layout = convertView.findViewById(R.id.item_select_carrier);
    ImageView logo = convertView.findViewById(R.id.item_select_carriers_logo);
    TextView name = convertView.findViewById(R.id.item_select_carriers_carrierName);



    // Data Set(listViewItemList)에서 position에 위치한 데이터 참조 획득
    Carrier carrier = listViewItemList.get(position);

    // 아이템 내 각 위젯에 데이터 반영
    logo.setImageDrawable(context.getDrawable(context.getResources().getIdentifier(carrier.getLogo(), "drawable", context.getPackageName())));
    name.setText(carrier.getName());

    layout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent();
            intent.putExtra("carrierName",);
            intent.putExtra("code");
            context.set         //HERE!!!!!!!!!!!!
        }
    });


    return convertView;
}

1 个答案:

答案 0 :(得分:1)

setResult()Activity而非Context的方法。有两种获取活动的方法。

  • 通常,ListAdapter是Activity的内部类,因此它可以访问Activity.this。然后,您可以呼叫Activity.this.setResult(...)。因此,在您的情况下,CarrierSelectListAdapter可以是CarrierSelectActivity的内部类,而您的onClickListener可以调用CarrierSelectActivity.this.setResult(...)

  • 或者,您可以将活动传递给CarrierSelectListAdapter的构造函数,后者可以将其分配给成员变量mActivity。然后,当您需要设置结果时,请致电mActivity.setResult(...)