reformat AsyncTask, bug fix
This commit is contained in:
parent
1ddba16c1a
commit
3169b4d735
|
@ -28,11 +28,16 @@ import java.lang.ref.WeakReference;
|
|||
|
||||
import twitter4j.TwitterException;
|
||||
|
||||
public class ProfileEditor extends AsyncTask<Integer, Void, Integer> {
|
||||
|
||||
public static final int READ_DATA = 0;
|
||||
public static final int WRITE_DATA = 1;
|
||||
private static final int ERROR = -1;
|
||||
public class ProfileEditor extends AsyncTask<Void, Void, Void> {
|
||||
|
||||
public enum Mode {
|
||||
READ_DATA,
|
||||
WRITE_DATA
|
||||
}
|
||||
private final Mode mode;
|
||||
private boolean failure;
|
||||
|
||||
private WeakReference<ProfileEdit> ui;
|
||||
private TwitterEngine mTwitter;
|
||||
private DatabaseAdapter mData;
|
||||
|
@ -43,11 +48,12 @@ public class ProfileEditor extends AsyncTask<Integer, Void, Integer> {
|
|||
private String image_path;
|
||||
|
||||
|
||||
public ProfileEditor(@NonNull ProfileEdit c) {
|
||||
public ProfileEditor(@NonNull ProfileEdit c, Mode mode) {
|
||||
ui = new WeakReference<>(c);
|
||||
mTwitter = TwitterEngine.getInstance(c);
|
||||
mData = new DatabaseAdapter(c);
|
||||
popup = new Dialog(c);
|
||||
this.mode = mode;
|
||||
|
||||
EditText name = ui.get().findViewById(R.id.edit_name);
|
||||
EditText link = ui.get().findViewById(R.id.edit_link);
|
||||
|
@ -86,10 +92,9 @@ public class ProfileEditor extends AsyncTask<Integer, Void, Integer> {
|
|||
|
||||
|
||||
@Override
|
||||
protected Integer doInBackground(Integer... modes) {
|
||||
final int MODE = modes[0];
|
||||
protected Void doInBackground(Void... v) {
|
||||
try {
|
||||
switch (MODE) {
|
||||
switch (mode) {
|
||||
case READ_DATA:
|
||||
user = mTwitter.getCurrentUser();
|
||||
break;
|
||||
|
@ -108,52 +113,52 @@ public class ProfileEditor extends AsyncTask<Integer, Void, Integer> {
|
|||
}
|
||||
} catch (TwitterException err) {
|
||||
this.err = err;
|
||||
return ERROR;
|
||||
failure = true;
|
||||
} catch (Exception err) {
|
||||
Log.e("E: ProfileEditor", err.getMessage());
|
||||
return ERROR;
|
||||
failure = true;
|
||||
}
|
||||
return MODE;
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Integer mode) {
|
||||
protected void onPostExecute(Void v) {
|
||||
if (ui.get() == null) return;
|
||||
|
||||
popup.dismiss();
|
||||
|
||||
switch (mode) {
|
||||
case READ_DATA:
|
||||
edit_name.append(user.getUsername());
|
||||
edit_link.append(user.getLink());
|
||||
edit_loc.append(user.getLocation());
|
||||
edit_bio.append(user.getBio());
|
||||
if(failure) {
|
||||
ErrorHandling.printError(ui.get(), err);
|
||||
ui.get().finish();
|
||||
} else {
|
||||
switch (mode) {
|
||||
case READ_DATA:
|
||||
edit_name.append(user.getUsername());
|
||||
edit_link.append(user.getLink());
|
||||
edit_loc.append(user.getLocation());
|
||||
edit_bio.append(user.getBio());
|
||||
|
||||
ImageView pb_image = ui.get().findViewById(R.id.edit_pb);
|
||||
String link = user.getImageLink() + "_bigger";
|
||||
Picasso.get().load(link).into(pb_image);
|
||||
ImageView pb_image = ui.get().findViewById(R.id.edit_pb);
|
||||
String link = user.getImageLink() + "_bigger";
|
||||
Picasso.get().load(link).into(pb_image);
|
||||
|
||||
final String mediaLink[] = new String[]{user.getImageLink()};
|
||||
pb_image.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent image = new Intent(ui.get(), ImageDetail.class);
|
||||
image.putExtra("link", mediaLink);
|
||||
ui.get().startActivity(image);
|
||||
}
|
||||
});
|
||||
break;
|
||||
final String mediaLink[] = new String[]{user.getImageLink()};
|
||||
pb_image.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent image = new Intent(ui.get(), ImageDetail.class);
|
||||
image.putExtra("link", mediaLink);
|
||||
ui.get().startActivity(image);
|
||||
}
|
||||
});
|
||||
break;
|
||||
|
||||
case WRITE_DATA:
|
||||
Toast.makeText(ui.get(), R.string.profile_updated, Toast.LENGTH_SHORT).show();
|
||||
ui.get().finish();
|
||||
break;
|
||||
|
||||
case ERROR:
|
||||
ErrorHandling.printError(ui.get(), err);
|
||||
ui.get().finish();
|
||||
break;
|
||||
case WRITE_DATA:
|
||||
Toast.makeText(ui.get(), R.string.profile_updated, Toast.LENGTH_SHORT).show();
|
||||
ui.get().finish();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -19,10 +19,7 @@ import java.util.List;
|
|||
|
||||
import twitter4j.TwitterException;
|
||||
|
||||
public class TwitterSearch extends AsyncTask<String, Integer, Void> {
|
||||
|
||||
private final int TWEET = 0;
|
||||
private final int USER = 1;
|
||||
public class TwitterSearch extends AsyncTask<String, Void, Void> {
|
||||
|
||||
private TimelineAdapter searchAdapter;
|
||||
private UserAdapter userAdapter;
|
||||
|
@ -63,11 +60,9 @@ public class TwitterSearch extends AsyncTask<String, Integer, Void> {
|
|||
if (searchAdapter.getItemCount() > 0)
|
||||
id = searchAdapter.getItemId(0);
|
||||
tweets = mTwitter.searchTweets(strSearch, id);
|
||||
publishProgress(TWEET);
|
||||
|
||||
if (userAdapter.getItemCount() == 0) {
|
||||
users = mTwitter.searchUsers(strSearch);
|
||||
publishProgress(USER);
|
||||
}
|
||||
} catch (TwitterException err) {
|
||||
this.err = err;
|
||||
|
@ -78,30 +73,21 @@ public class TwitterSearch extends AsyncTask<String, Integer, Void> {
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onProgressUpdate(Integer... mode) {
|
||||
if (ui.get() == null) return;
|
||||
|
||||
switch (mode[0]) {
|
||||
case TWEET:
|
||||
searchAdapter.setData(tweets);
|
||||
searchAdapter.notifyDataSetChanged();
|
||||
SwipeRefreshLayout tweetReload = ui.get().findViewById(R.id.searchtweets);
|
||||
tweetReload.setRefreshing(false);
|
||||
break;
|
||||
|
||||
case USER:
|
||||
userAdapter.setData(users);
|
||||
userAdapter.notifyDataSetChanged();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Void v) {
|
||||
if (ui.get() == null) return;
|
||||
|
||||
SwipeRefreshLayout tweetReload = ui.get().findViewById(R.id.searchtweets);
|
||||
tweetReload.setRefreshing(false);
|
||||
|
||||
if(!tweets.isEmpty()) {
|
||||
searchAdapter.setData(tweets);
|
||||
searchAdapter.notifyDataSetChanged();
|
||||
}
|
||||
if(!users.isEmpty()) {
|
||||
userAdapter.setData(users);
|
||||
userAdapter.notifyDataSetChanged();
|
||||
}
|
||||
if (err != null) {
|
||||
ErrorHandling.printError(ui.get(), err);
|
||||
}
|
||||
|
|
|
@ -26,6 +26,8 @@ import org.nuclearfog.twidda.database.GlobalSettings;
|
|||
|
||||
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
|
||||
import static android.os.AsyncTask.Status.RUNNING;
|
||||
import static org.nuclearfog.twidda.backend.ProfileEditor.Mode.READ_DATA;
|
||||
import static org.nuclearfog.twidda.backend.ProfileEditor.Mode.WRITE_DATA;
|
||||
|
||||
/**
|
||||
* @see org.nuclearfog.twidda.backend.ProfileEditor
|
||||
|
@ -59,8 +61,8 @@ public class ProfileEdit extends AppCompatActivity implements View.OnClickListen
|
|||
protected void onStart() {
|
||||
super.onStart();
|
||||
if (mEdit == null) {
|
||||
mEdit = new ProfileEditor(this);
|
||||
mEdit.execute(ProfileEditor.READ_DATA);
|
||||
mEdit = new ProfileEditor(this, READ_DATA);
|
||||
mEdit.execute();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -146,8 +148,8 @@ public class ProfileEdit extends AppCompatActivity implements View.OnClickListen
|
|||
} else {
|
||||
if (mEdit != null && mEdit.getStatus() == RUNNING)
|
||||
mEdit.cancel(true);
|
||||
mEdit = new ProfileEditor(this);
|
||||
mEdit.execute(ProfileEditor.WRITE_DATA);
|
||||
mEdit = new ProfileEditor(this, WRITE_DATA);
|
||||
mEdit.execute();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue