2016-02-16 2 views
-4

Я пытаюсь понять, как работают интерфейсы. Я ознакомился с основными учебными руководствами по интерфейсам в Интернете и просмотрел несколько видеороликов, поэтому у меня есть хорошее представление о том, что такое интерфейс и его преимущества.Как работает интерфейс?

Интерфейс

public interface UpyunFormApi { 
@Description("上传文件") 
@POST("/{bucket}") 
@Multipart 
public Request upload(@Path("bucket") String bucket, @Part("policy") PolicyPart policy, 
     @Part("signature") SignaturePart signature, @Part("file") File file, OnRequestListener requestListener, 
     OnResponseListener<UpyunFormEntity> responseListener, OnErrorListener errorListener); 

Код

private UpyunFormApi formApi; 
private void uploadAndPushTopic() { 
     String bucket = UrlManager.getInstance().getUpyunImageBucket(); 
     String secret = UrlManager.getInstance().getUpyunImageSecret(); 

     for (File file : filearr) { 
      PolicyPart policy = new PolicyPart(bucket); 
      SignaturePart signature = new SignaturePart(policy, secret); 
      formApi.upload(bucket, policy, signature, file, uploadRequestListener, uploadResponseListener, 
        uploadErrorListener); 
     } 
    } 

    private OnRequestListener uploadRequestListener = new OnRequestListener() { 

     @Override 
     public void onRequest(Request arg0) { 
     } 
    }; 

    private OnErrorListener uploadErrorListener = new OnErrorListener() { 

     @Override 
     public void onError(LegolasException arg0) { 
      } 
    }; 

    private OnResponseListener<UpyunFormEntity> uploadResponseListener = new OnResponseListener<UpyunFormEntity>() { 

     @Override 
     public void onResponse(UpyunFormEntity arg0) { 
      } 
     } 
    }; 

Почему Responselister работает после того, как "formApi.upload()" закончил? И я не могу найти функцию definition.Help! Я не понимаю код

@Description("上传文件") 
    @POST("/{bucket}") 
    @Multipart 
+5

«Я прочитал основные руководства по интерфейсу ...» теперь читайте документацию для аннотаций, которые вы используете. – ChiefTwoPencils

+0

'Почему Ответчик работает после того, как« formApi.upload() «закончен?» - вы проверяли исключения или ошибки? Есть ли только один файл в массиве? Я бы посоветовал вам отлаживать ваш код, чтобы узнать, что происходит. – Thomas

ответ

0

сделать интерфейс как:

public interface ChangeItemInterface { 

     public void doChange(String anyValue); 

    } 

В адаптере,

инициализировать объект интерфейса, как:

ChangeItemInterface changeItemInterface; 

В адаптер Конструктора,

this.changeItemInterface = context; 

В адаптере, из любого Щелчком:

AnyView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       this.changeItemInterface.doChange("AnyValue"); 
       // It will go to the Your Activity Overided method which is explained below this 


      } 
     }); 

В Вашей деятельности реализовать этот INTERF туз как:

 public class YourActivity extends Activity implements ChangeItemInterface{ 

     /// You'll get override method of your interface, here your call back will come when from adapter click happen 
     @Override 
      public void doChange(String anyValue) { 

       /// Here you can update any value in your activity ! 
      } 

     } 

Надеется, что это демо помогут вам понять использование интерфейса!

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