2015-09-04 76 views
0

我怎么能发送从适配器参数,当我点击的TextView“tvlist”到活动“SelectAddressActivity”,在SelectAddressActivity我有两个EditText上,我想从适配器我怎么能发送到参数从适配器到活动

充满参数
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    Typeface quicksandRegular = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Light.ttf"); 


    final View row = inflater.inflate(R.layout.list_item, parent, false); 

    AddressList al= objects.get(position); 

    final TextView tvlist = (TextView)row.findViewById(R.id.id_TextView); 
    tvlist.setTypeface(quicksandRegular); 
    tvlist.setText(al.get_addresse()); 


    tvlist.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      String content = tvlist.getText().toString(); 

     } 
    }); 

活动

public class SelectAddressActivity extends Activity { 
    ArrayList<AddressList> addressList ; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_select_address); 


     final ListView addressListView = (ListView) findViewById(R.id.addressListView); 


     final SelectAddressAdapter adapter = new SelectAddressAdapter(this, android.R.layout.simple_list_item_1, addressList);  
     addressListView.setAdapter(adapter); 

} 

回答

3

您必须在排送onclick,像下面

row.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      AddressList al= objects.get(position); 
      Intent intent = new Intent(activity, SelectAddressActivity.class); 
      intent.putExtra("id", objects.getyourvariable()); 

      activity.startActivity(intent); 
     } 
    }); 
+0

嗨 这是适配器 第一个参数活动 \t - 活动无法解析为变量 Intent intent = new Intent(activity,SelectAddressActivity.class); –

+0

你必须从适配器发送参数到另一个activity..right? – Mayuri

+0

是从适配器到活动 –

2
  1. make interface;

    public interface AsyncResponse { 
        void processFinish(Object output); 
    } 
    
  2. ,并添加活性

    实现AsyncResponse

  3. 在活动中,你必须实现processFinish(对象输出)...

  4. 在适配器

    ,添加成员变量

    public AsyncResponse delegate = nu二;

  5. 在setOnClickListener

    ,添加以下代码:

    delegate.processFinish(YOUR PASS DATA);

3

你可以做到这一点使用的界面,在这里我已经OnClickInAdapter界面创建并在适配器类中定义。 把下面的代码在你的适配器,

OnClickInAdapter onClickInAdapter; 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    Typeface quicksandRegular = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Light.ttf"); 
    final View row = inflater.inflate(R.layout.list_item, parent, false); 
    AddressList al = objects.get(position); 
    final TextView tvlist = (TextView) row.findViewById(R.id.id_TextView); 
    tvlist.setTypeface(quicksandRegular); 
    tvlist.setText(al.get_addresse()); 
    tvlist.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String content = tvlist.getText().toString(); 
      try { 
       onClickInAdapter = (OnClickInAdapter) context; 
      } catch (ClassCastException e) { 
       throw new ClassCastException(contxt.toString() 
         + " must implement OnClickInAdapter"); 
      } 
      onClickInAdapter.onClickInAdapter(content); 
     } 
    }); 
} 

public interface OnClickInAdapter { 
    public void onClickInAdapter(String content); 
} 

而且现在的活动应该实现这个接口,这样,当适配器OnClick方法被调用,最终是onCLickInAdapter()被调用该活动的方法,把下面的代码在您的活动,

public class SelectAddressActivity extends AppCompatActivity implements MyAdapter.OnClickInAdapter{ 

@Override 
public void onClickInAdapter(String content) { 
    // you can fill the editText here 
} 
} 

让我知道,如果它的工作原理,并标记为答复这样,这将是有用的人......

相关问题