android.util.Pair的例子

时间:2013-11-30 01:34:53

标签: java android

   @Override
    public void onClick(View view) {
        Context context = view.getContext();
        switch(view.getId()) {
            case R.id.getGreetingButton:
                Pair <Context,Integer>p=new Pair(context,1);
                new RestTask().execute(p);
                break;

        }
    }

    private class RestTask extends AsyncTask<Pair<Context,Integer>, Void, Pair<Context,String>> {
        @Override
        protected Pair doInBackground(Pair<Context,Integer>... p) {
            String text = "hello";
            Pair <Context,String>result=new Pair(p.first,text);
            return result;
        }
        @Override
        protected void onPostExecute(Pair<Context,String>... p) {toaster(p.first, p.second);}
    }

1)你如何称呼...这个东西,它做了什么?

2)为什么编译器找不到p.first和p.second?

3)你什么时候使用Pair.create(a,b)?

1 个答案:

答案 0 :(得分:7)

1)请参阅http://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html - 它实际上是你在这里传递的可变数量的对。

2)使用p [0] .first和p [0] .second,将参数视为数组。你可以在调用execute()时传递很多Pa,并且每个pa成为传递给doInBackground()的数组中的一个项目

3)你可以在调用execute()时使用它作为简写来避免创建局部变量p,并且在doInBackground中你可以返回Pair.create()而不是创建本地结果变量。类似的东西:

switch(view.getId()) {
        case R.id.getGreetingButton:
            new RestTask().execute(Pair.create(context,1));
            break;

    }