2015-09-04 44 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 
} 
} 

讓我知道,如果它的工作原理,並標記爲答覆這樣,這將是有用的人......

相關問題