【问题标题】:Sending Intent and filling a listView发送 Intent 并填充 listView
【发布时间】:2015-03-27 17:17:11
【问题描述】:

嗨,我试图使用并打算发送我的 google+ 朋友的姓名和照片的信息,我正试图在另一项活动中向他们展示,但问题是它只显示一个朋友,比如 20 次......不要知道该怎么做...请帮助

这是我的代码:

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;

        }
    }

【问题讨论】:

    标签: listview android-intent send


    【解决方案1】:

    您正在向只有一个朋友的活动发送意图。您应该只启动一次活动,并在一个意图中额外发送有关您所有朋友的信息。否则,您将为每个朋友启动一次活动,并且只发送有关该朋友的信息。因此,当您的活动获得最后一个意图时,它仅具有有关最后一个朋友的信息,并且每次在 for 中都获得相同的信息。我希望你明白。如果您需要,我可以进一步帮助您

    【讨论】:

    • 您可以使用类似stackoverflow.com/questions/18050030/… 的东西在一个意图中发送整个数组列表并仅启动一次活动,然后您不需要在第一个活动中使用 for
    • 嗨!抱歉,我不明白我怎样才能只开始一次活动......请帮助我为此苦苦挣扎了好几天
    • 只有在您需要将整个朋友列表发送到该活动时才开始活动。因此,要将列表作为额外的 Intent 传递,您需要创建一个实现可序列化或可打包的对象列表。因此,您应该创建一个包含每个朋友的姓名和照片的对象,并且该对象需要实现 Serializable o Parcelable (developer.android.com/reference/android/os/Parcelable.html)。 Parcelable 是 Android 的推荐方法,但可能更难实现。然后使用 intent.putParcelableArrayListExtra("key", value); 将此数组作为额外数组传递
    • 然后在 MainActivity2 从意图中获取额外信息并从每个对象获取信息
    • 在 for 上,我已经实现了一个 if 在 for 完成时发送整个列表,因此发送整个 ArrayList,但是 arralist 没有显示我不知道为什么.. 已经放了 Log一切似乎都很好
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多