【问题标题】:How to call getIntent() in adapter class如何在适配器类中调用 getIntent()
【发布时间】:2013-04-15 02:22:30
【问题描述】:

在 getView() 方法中,我想调用 getIntent()。在不开始新活动的情况下如何实现这一目标。 getView 方法是这样的

public View getView(final int position, View convertView, ViewGroup parent) {
    PaymentData rowItem = getItem(position);
    LayoutInflater mInflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    if (convertView == null) {
        convertView = mInflater.inflate(
                com.android.paypal.homeactivity.R.layout.list_item, null);
        holder = new ViewHolder();
        holder.radioBtn = (RadioButton) convertView
                .findViewById(com.android.paypal.homeactivity.R.id.rdb_payment_method);
        convertView.setTag(holder);
    } else
        holder = (ViewHolder) convertView.getTag();

    if (position == getCount() - 1 && userSelected == false) {
        holder.radioBtn.setChecked(true);
        mCurrentlyCheckedRB = holder.radioBtn;
    } else {
        holder.radioBtn.setChecked(false);
    }

    holder.radioBtn.setText(rowItem.getRdbText());
    return convertView;
}

【问题讨论】:

  • 您可以将数据传递给适配器的构造函数。
  • 实际上当用户点击当前按钮时,我想将数据传递给另一个活动而不创建新活动。
  • try ((Activity)view.getContext()).getIntent() 在Adapter类中查看itemView

标签: android listview android-intent


【解决方案1】:

这里是这个问题的解决方案。

            Intent intent = ((Activity) context).getIntent();
            intent.putExtra("SELECTED_PAYMENT", mCurrentlyCheckedRB
                    .getText().toString());
            ((Activity) context).setResult(((Activity) context).RESULT_OK,
                    intent);
            ((Activity) context).finish();

【讨论】:

    【解决方案2】:
    public class MyAdapter extends ArrayAdapter
    {
        private Context context;
        private Intent intent;
    
        MyAdapter(Context context)
        {
            this.context = context;
        }
    
        MyAdapter(Context context,Intent intent)
        {
           this(context);
           this.intent = intent; // use this intent
        }
    
        private View getView()
        {
            // use intent here
        }
    

    在您的活动中使用第二个构造函数创建您的适配器类的对象

    Intent yourIntent = new Intent(); 
    

    或者:

    Intent yourIntent = getIntent();
    MyAdapter adapter = new MyAdapter(context,yourIntent); // here pass intent
    

    【讨论】:

      【解决方案3】:

      在适配器类中,您传递活动实例并使用 Context 变量捕获它。 下面sn-p会帮到你,

      私有上下文 mcontext;

      private Intent adapintent;
      
      MyIntentAdapter(Context context){
          this.mcontext = context;
      }
      
      MyIntentAdapter(Context context,Intent intent){
         this(context);
         this.adapintent= intent;
      
      }
      

      【讨论】:

        【解决方案4】:

        public View getView(final int position, View convertView, ViewGroup parent) {

        PaymentData rowItem = getItem(position);
        
        
        LayoutInflater mInflater = (LayoutInflater) context
                .getSystemService(Context.getintent().LAYOUT_INFLATER_SERVICE);
        

        {

        //你可以包含这个 :context.getintent(); }

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-12-01
          • 2015-07-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-06-08
          相关资源
          最近更新 更多