2016-08-22 26 views
-2

我一直在尋找答案,我只是轉身而過。 我試圖讓我的應用程序與谷歌驅動器工作。 我的問題是,我在一個類中調用的適配器中使用意圖,我想通過我從另一個活動獲得的意圖變量。使用活動中的全局變量的適配器的意圖

我的內部類:

public class QueryFilesActivity extends BaseDemoActivity { 

    private ListView mResultsListView; 
    private ResultsAdapter mResultsAdapter; 
    Date date = new Date(); 
    String stringDate = DateFormat.getDateInstance().format(date); 
    String ecrire; 
    String ville; 
    String container; 
    @Override 
    protected void onCreate(Bundle b) { 
     super.onCreate(b); 
     setContentView(R.layout.activity_listfiles); 
     mResultsListView = (ListView) findViewById(R.id.listViewResults); 
     mResultsAdapter = new ResultsAdapter(this); 
     mResultsListView.setAdapter(mResultsAdapter); 
     Intent i = getIntent(); 
     ecrire = i.getStringExtra("test"); 
     ville = i.getStringExtra("ville"); 
     container = i.getStringExtra("cont"); 
    } 

    /** 
    * Clears the result buffer to avoid memory leaks as soon 
    * as the activity is no longer visible by the user. 
    */ 
    @Override 
    protected void onStop() { 
     super.onStop(); 
     mResultsAdapter.clear(); 
    } 

    @Override 
    public void onConnected(Bundle connectionHint) { 
     super.onConnected(connectionHint); 
     Query query = new Query.Builder() 
       .addFilter(Filters.eq(SearchableField.TITLE, stringDate+"_"+ville+2)) 
       .build(); 
     Drive.DriveApi.query(getGoogleApiClient(), query) 
       .setResultCallback(metadataCallback); 
    } 

    final private ResultCallback<MetadataBufferResult> metadataCallback = new 
      ResultCallback<MetadataBufferResult>() { 
       @Override 
       public void onResult(MetadataBufferResult result) { 
        if (!result.getStatus().isSuccess()) { 
         showMessage("Problem while retrieving results"); 
         return; 
        } 
        mResultsAdapter.clear(); 
        mResultsAdapter.append(result.getMetadataBuffer()); 
       } 
      }; 
} 

而且我的適配器:

public class ResultsAdapter extends DataBufferAdapter<Metadata> { 


    public ResultsAdapter(Context context) { 
     super(context, android.R.layout.simple_list_item_1); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     if (convertView == null) { 
      convertView = View.inflate(getContext(), 
        android.R.layout.simple_list_item_1, null); 
     } 
     Metadata metadata = getItem(position); 

     String resultat = metadata.getAlternateLink(); 
     String S1 = resultat.substring(32,60); 
     TextView titleTextView = 
       (TextView) convertView.findViewById(android.R.id.text1); 
     titleTextView.setText(S1); 
     Intent intent = new Intent(getContext(), EditContentsActivity.class); 
     intent.putExtra("file", S1); 



     getContext().startActivity(intent); 


     return convertView; 
    } 

} 

我想通過我在我在我的適配器的意圖意圖得到。 有什麼建議嗎?

+0

你需要拉值超出了活動的意圖,並把它們放在一個包?有什麼問題?我看到你已經在你的代碼中做了這兩件事。 – nasch

+0

是的,似乎你已經實現了發送和檢索數據的必要性,是否有一些錯誤? –

+0

我想把我在我的活動中得到的東西放在適配器的內部傳遞給EditcontentsActivity.I'm litlle bit lost ...或者我可以直接檢索它?我只是不知道如何去做 – filoman

回答

0

我只是忘了把我的第三課記錄到我的驅動器中。

public class EditContentsActivity extends BaseDemoActivity { 
String saver; 
String numero; 
String file; 
String ville; 


private static final String TAG = "EditContentsActivity"; 

@Override 
public void onConnected(Bundle connectionHint) { 
    super.onConnected(connectionHint); 

    final ResultCallback<DriveApi.DriveIdResult> idCallback = new ResultCallback<DriveApi.DriveIdResult>() { 
     @Override 
     public void onResult(DriveApi.DriveIdResult result) { 
      if (!result.getStatus().isSuccess()) { 
       showMessage("Cannot find DriveId. Are you authorized to view this file?"); 
       return; 
      } 
      DriveId driveId = result.getDriveId(); 
      DriveFile file = driveId.asDriveFile(); 
      new EditContentsAsyncTask(EditContentsActivity.this).execute(file); 
     } 
    }; 
    Intent i = getIntent(); 
    file = i.getStringExtra("file"); 
    ville = i.getStringExtra("localite"); 

    Drive.DriveApi.fetchDriveId(getGoogleApiClient(), file) 
      .setResultCallback(idCallback); 
} 

public class EditContentsAsyncTask extends ApiClientAsyncTask<DriveFile, Void, Boolean> { 

    public EditContentsAsyncTask(Context context) { 
     super(context); 
    } 

    @Override 
    protected Boolean doInBackgroundConnected(DriveFile... args) { 
     DriveFile file = args[0]; 
     try { 
      DriveApi.DriveContentsResult driveContentsResult = file.open(
        getGoogleApiClient(), DriveFile.MODE_READ_WRITE, null).await(); 
      if (!driveContentsResult.getStatus().isSuccess()) { 
       return false; 
      } 
      Intent i = getIntent(); 
      saver = i.getStringExtra("test"); 
      numero = i.getStringExtra("cont"); 
      double e1 = i.getDoubleExtra("lat", 0); 
      double e2 = i.getDoubleExtra("longi", 0); 

      DriveContents driveContents = driveContentsResult.getDriveContents(); 
      ParcelFileDescriptor parcelFileDescriptor = driveContents.getParcelFileDescriptor(); 
      FileInputStream fileInputStream = new FileInputStream(parcelFileDescriptor.getFileDescriptor()); 
      fileInputStream.read(new byte[fileInputStream.available()]); 
      FileOutputStream fileOutputStream = new FileOutputStream(parcelFileDescriptor.getFileDescriptor()); 
      Writer writer = new OutputStreamWriter(fileOutputStream); 
      writer.write("\n container "+numero+" : "+saver+"\nlatitude : "+e1+" longitude : "+e2+ville); 
      writer.close(); 
      fileOutputStream.close(); 
      //OutputStream outputStream = driveContents.getOutputStream(); 
      //outputStream.write("Hello world".getBytes()); 
      com.google.android.gms.common.api.Status status = 
        driveContents.commit(getGoogleApiClient(), null).await(); 
      return status.getStatus().isSuccess(); 
     } catch (IOException e) { 
      Log.e(TAG, "IOException while appending to the output stream", e); 
     } 
     return false; 
    } 

    @Override 
    protected void onPostExecute(Boolean result) { 
     if (!result) { 
      showMessage("Error while editing contents"); 
      return; 
     } 
     showMessage("les données ont bien été enregistrées"); 
    } 
} 

} 發生的事情是,我的變量是空