2015-03-27 2 views
0

hi im пытается использовать и намерен отправлять информацию о имени и фотографиях моих google + frinds, и я пытаюсь показать их в другом действии, но проблема в том, что он показывает только одного друга, 20 раз ... не знаю, что делать ... пожалуйста, помогитеОтправка намерения и заполнение спискаView

вот мой код:

MainActivity.java:

if (peopleData.getStatus().getStatusCode() == CommonStatusCodes.SUCCESS) { 
      // mCirclesList.clear(); 
      PersonBuffer personBuffer = peopleData.getPersonBuffer(); 

      try { 
       int count = personBuffer.getCount(); 
       for (int i = 0; i < count; i++) { 

        Log.i("Google", "Requesting visible circles");      
        Intent toMainActivity2= new Intent(MainActivity.this,MainActivity2.class); 
        toMainActivity2.putExtra("NameURL",personBuffer.get(i).getDisplayName()); 
        toMainActivity2.putExtra("PhotoURL",personBuffer.get(i).getImage().getUrl()); 
        toMainActivity2.putExtra("Count", count); 
        Log.i("Google", "Sending visible circles"); 
        startActivity(toMainActivity2); 
       } 
      } finally { 
       personBuffer.close(); 
      } 

     } 

и вот мой MainActivity2:

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main2); 

     mCirclesListView = (ListView) findViewById(R.id.circles_list); 
     aa=new FancyAdapter(); 
     mCirclesListView.setAdapter(aa); 
     aa.notifyDataSetChanged(); 
     Intent retrieveInformation = getIntent(); 
     int count = retrieveInformation.getExtras().getInt("Count"); 

      for (int i = 0; i < count; i++){ 

      String NameURL = retrieveInformation.getExtras().getString("NameURL"); 
      mCirclesList.add(NameURL); 
      String PhotoURL = retrieveInformation.getExtras().getString("PhotoURL"); 
      mCirclesList2.add(PhotoURL); 
      Log.i("Google", "Recieving visible circles"); 
     } 
} 

    class ViewHolder{ 
     ImageView profilePhoto; 
     TextView profileName; 
    } 

    class FancyAdapter extends ArrayAdapter<String> { 

     FancyAdapter(){ 
      super(MainActivity2.this,android.R.layout.simple_list_item_1,mCirclesList); 
     } 
     public View getView(int position,View convertView, ViewGroup parent){ 
      Log.i("Google", "getView"); 

      ViewHolder holder; 
      if (convertView==null){ 
       LayoutInflater inflater=getLayoutInflater(); 
       convertView=inflater.inflate(R.layout.custom_list_item,null); 
       holder=new ViewHolder(); 
       holder.profileName=(TextView) convertView.findViewById(R.id.textView); 
       holder.profilePhoto=(ImageView) convertView.findViewById(R.id.imageView); 
       convertView.setTag(holder); 
       Log.i("Google","Using ViewHolder"); 
      }else{ 
       holder=(ViewHolder) convertView.getTag(); 

      } 

      holder.profileName.setText(mCirclesList.get(position)); 
      Picasso.with(MainActivity2.this) 
        .load(mCirclesList2.get(position)) 
        .resize(50, 50) 
        .config(Bitmap.Config.ARGB_4444) 
        .error(R.drawable.abc_btn_radio_to_on_mtrl_015) // en caso de no tener imagen pone la de la dirección 
        .into(holder.profilePhoto); 
      Log.i("Google","Recycling Shit whith the ViewHolder"); 
      return convertView; 

     } 
    } 

ответ

0

Вы отправляете намерение осуществлять деятельность только с одним из ваших друзей. Вы должны начать работу только один раз и отправить в качестве дополнительной информации обо всех своих друзьях в одном намерении. В противном случае вы начинаете свою деятельность один раз за друга и только отправляете информацию об этом другом. Поэтому, когда ваша деятельность получает последнее намерение, у нее есть только информация о последнем друге и каждый раз, когда она получает ту же информацию. Надеюсь, вы понимаете. Если вам нужно, я могу вам помочь.

+0

Вы можете использовать что-то вроде этого http://stackoverflow.com/questions/18050030/intent-putextra-arraylistnamevaluepair, чтобы отправить весь аррайалист в одно намерение и запустить его только один раз, затем вам не нужно использовать for в первом действии – Martina

+0

привет! извините, я не понимаю, как я могу начать свою деятельность только один раз ... пожалуйста, помогите ive изо дня в день борется с этим – Andrea

+0

Чтобы начать свою деятельность только после того, как вам нужно отправить весь список друзей в эту деятельность. Итак, чтобы передать список в качестве дополнительного в намерении, вам необходимо создать список объектов, которые реализуют сериализуемые или возможные. Поэтому вы должны создать объект, который содержит имя и фотографию для каждого друга, и этот объект должен реализовать Serializable o Parcelable (http://developer.android.com/reference/android/os/Parcelable.html). Parcelable рекомендуется использовать для Android, но этого сложнее достичь. Затем вы передаете этот массив как дополнительный, используя intent.putParcelableArrayListExtra («ключ», значение); – Martina

Смежные вопросы