Не могу обновить активность (просмотр списка) - PullRequest
0 голосов
/ 04 марта 2019
public class PrivateActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener, CardView.OnClickListener {

private static Database db;
private ListView privateDocs;
private CardView Upload;
final int ACTIVITY_CHOOSE_FILE = 1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_private);
    try {
        db = Database.newInstance();     
        fillListWithDocuments();
    } catch (Exception ex) {
        Toast.makeText(this, "Error: " + ex.getMessage(), Toast.LENGTH_LONG).show();
    }
}

private void fillListWithDocuments() throws Exception {
    ArrayList<PrivateFile> privateDoc = db.getAllPrivateFiles(Database.getCurLoggedInStudent().getVisitedClass().getRoomNr());
    ArrayAdapter<PrivateFile> arrayAdapter = new ArrayAdapter<PrivateFile>(
            this,
            android.R.layout.simple_list_item_1,
            privateDoc);

    privateDocs.setAdapter(arrayAdapter);
}

@Override
public void onClick(View v) {
    try {
        switch (v.getId()) {
            case R.id.btnUpload: {
                Intent chooseFile;
                Intent intent;
                chooseFile = new Intent(Intent.ACTION_GET_CONTENT);
                chooseFile.setType("*/*");
                intent = Intent.createChooser(chooseFile, "Choose a file");
                startActivityForResult(intent, ACTIVITY_CHOOSE_FILE);
            }
        }
    } catch (Exception ex) {
        Toast.makeText(this, "Error caused by uploading file: " + ex.getMessage(), Toast.LENGTH_LONG).show();
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode) {
        case ACTIVITY_CHOOSE_FILE: {
            if (resultCode == RESULT_OK) {
                Uri uri = data.getData();
                try {
                    byte[] inputData = getBytes(getContentResolver().openInputStream(uri));
                    PrivateFile pf = new PrivateFile(1,inputData);
                    db.addPrivateFile(pf);
                    fillListWithDocuments(); //refreshing table
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }

}

public byte[] getBytes(InputStream inputStream) throws IOException {

    ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream();
    int bufferSize = 1024;
    byte[] buffer = new byte[bufferSize];

    int len = 0;
    while ((len = inputStream.read(buffer)) != -1) {
        byteBuffer.write(buffer, 0, len);
    }
    return byteBuffer.toByteArray();
}
}

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

PS: База данных - это просто класс, который вызывает функции веб-сервиса.Я показал только соответствующие фрагменты кода.

...