如何从另一个类设置自定义列表视图适配器?

时间:2012-09-17 20:39:41

标签: android class android-listview instance android-context

我想在我的Preferences类中使用位于我的主类中的适配器设置自定义列表视图适配器。当我尝试:

MyActivity.listView.setAdapter(new MyActivity.UserItemAdapter2(Prefs.this, R.layout.listitem, MyActivity.tweets));

我收到一条错误消息,指出“无法访问MyActivity类型的封闭实例”。我不能使我的适配器类静态,因为它调用getSystemService,这是一种非静态方法。怎么解决这个?任何帮助是极大的赞赏。 这是我的适配器类:

public class UserItemAdapter2 extends ArrayAdapter<Tweet> {
            private ArrayList<Tweet> tweets;

            public UserItemAdapter2(Context context, int textViewResourceId, ArrayList<Tweet> tweets) {
                super(context, textViewResourceId, tweets);
                this.tweets = tweets;
            }

            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                View v = convertView;
                if (v == null) {
                    LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                    v = vi.inflate(R.layout.listitem, null);
                }

                Tweet tweet = tweets.get(position);
                if (tweet != null) {
                    TextView username = (TextView) v.findViewById(R.id.username);
                    TextView message = (TextView) v.findViewById(R.id.message);
                    ImageView image = (ImageView) v.findViewById(R.id.avatar);

                    if (username != null) {
                        username.setText(tweet.username);
                    }

                    if(message != null) {
                        message.setText(tweet.message);
                    }

                    if(image != null) {
                        //image.setImageBitmap(getBitmap(tweet.image_url));
                        tango.DisplayImage(tweet.image_url, image);
                    }
                }
                return v;
            }
        }  

1 个答案:

答案 0 :(得分:0)

您可以将Adapter拉出到自己的文件中,以便随时随地使用。