finalized fragments, performance improvement

This commit is contained in:
NudeDude 2019-05-05 17:16:33 +02:00
parent d433cad0cd
commit 8c05980ab6
14 changed files with 92 additions and 80 deletions

2
.idea/misc.xml generated
View File

@ -5,7 +5,7 @@
<configuration PROFILE_NAME="Debug" CONFIG_NAME="Debug" />
</configurations>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">

View File

@ -85,7 +85,7 @@ public class MessageAdapter extends RecyclerView.Adapter<MessageAdapter.MessageH
RecyclerView rv = (RecyclerView) parent;
int position = rv.getChildLayoutPosition(view);
if (itemClickListener.get() != null)
itemClickListener.get().onAnswer(messages[position]);
itemClickListener.get().onClick(messages[position], OnItemSelected.Action.ANSWER);
}
});
view.findViewById(R.id.dm_delete).setOnClickListener(new View.OnClickListener() {
@ -94,7 +94,7 @@ public class MessageAdapter extends RecyclerView.Adapter<MessageAdapter.MessageH
RecyclerView rv = (RecyclerView) parent;
int position = rv.getChildLayoutPosition(view);
if (itemClickListener.get() != null)
itemClickListener.get().onDelete(messages[position]);
itemClickListener.get().onClick(messages[position], OnItemSelected.Action.DELETE);
}
});
view.findViewById(R.id.dm_profileImg).setOnClickListener(new View.OnClickListener() {
@ -103,7 +103,7 @@ public class MessageAdapter extends RecyclerView.Adapter<MessageAdapter.MessageH
RecyclerView rv = (RecyclerView) parent;
int position = rv.getChildLayoutPosition(view);
if (itemClickListener.get() != null)
itemClickListener.get().onProfileClick(messages[position]);
itemClickListener.get().onClick(messages[position], OnItemSelected.Action.PROFILE);
}
});
return new MessageHolder(view);
@ -183,10 +183,12 @@ public class MessageAdapter extends RecyclerView.Adapter<MessageAdapter.MessageH
public interface OnItemSelected extends OnTagClickListener {
void onAnswer(Message message);
enum Action {
ANSWER,
DELETE,
PROFILE
}
void onDelete(Message message);
void onProfileClick(Message message);
void onClick(Message message, Action action);
}
}

View File

@ -137,9 +137,8 @@ public class TweetAdapter extends Adapter<TweetAdapter.ItemHolder> {
else
vh.verify.setVisibility(View.GONE);
if (img_ldr) {
if (img_ldr)
Picasso.get().load(tweet.getUser().getImageLink() + "_mini").into(vh.profile);
}
}

View File

@ -16,7 +16,7 @@ public class TweetPagerAdapter extends FragmentPagerAdapter {
super(fm);
Bundle param = new Bundle();
param.putSerializable("mode",TweetType.TWEET_ANSR);
param.putSerializable("mode", TweetType.TWEET_ANSR);
param.putString("search", name);
param.putBoolean("fix", false);
param.putLong("id", id);

View File

@ -11,6 +11,8 @@ import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.squareup.picasso.Picasso;
import org.nuclearfog.tag.Tagger;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.items.Tweet;
@ -22,8 +24,8 @@ import org.nuclearfog.twidda.window.UserProfile;
import java.lang.ref.WeakReference;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import twitter4j.TwitterException;
import com.squareup.picasso.Picasso;
import static android.view.View.VISIBLE;
import static org.nuclearfog.twidda.window.TweetDetail.STAT_CHANGED;

View File

@ -11,7 +11,7 @@ import org.nuclearfog.twidda.backend.items.TwitterUser;
import org.nuclearfog.twidda.database.GlobalSettings;
import java.io.File;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import twitter4j.DirectMessage;
@ -199,7 +199,7 @@ public class TwitterEngine {
* @throws TwitterException if access is unavailable
*/
public List<Trend> getTrends(int woeId) throws TwitterException {
List<Trend> result = new ArrayList<>();
List<Trend> result = new LinkedList<>();
twitter4j.Trend[] trends = twitter.getPlaceTrends(woeId).getTrends();
for (int i = 0; i < trends.length; i++) {
@ -377,7 +377,7 @@ public class TwitterEngine {
IDs userIDs = twitter.getFriendsIDs(userId, cursor, load);
long[] ids = userIDs.getIDs();
if (ids.length == 0)
return new ArrayList<>();
return new LinkedList<>();
return convertUserList(twitter.lookupUsers(ids));
}
@ -393,7 +393,7 @@ public class TwitterEngine {
IDs userIDs = twitter.getFollowersIDs(userId, cursor, load);
long[] ids = userIDs.getIDs();
if (ids.length == 0)
return new ArrayList<>();
return new LinkedList<>();
return convertUserList(twitter.lookupUsers(userIDs.getIDs()));
}
@ -448,7 +448,7 @@ public class TwitterEngine {
* @throws TwitterException if Access is unavailable
*/
public List<Tweet> getAnswers(String name, long tweetId, long sinceId) throws TwitterException {
List<Status> answers = new ArrayList<>();
List<Status> answers = new LinkedList<>();
Query query = new Query("to:" + name + " since_id:" + sinceId + " -filter:retweets");
query.setCount(load);
QueryResult result = twitter.search(query);
@ -521,7 +521,7 @@ public class TwitterEngine {
tweetID = embeddedStat.getId();
long[] userIds = twitter.getRetweeterIds(tweetID, load, cursor).getIDs();
if (userIds.length == 0)
return new ArrayList<>();
return new LinkedList<>();
return convertUserList(twitter.lookupUsers(userIds));
}
@ -534,7 +534,7 @@ public class TwitterEngine {
*/
public List<Message> getMessages() throws TwitterException {
List<DirectMessage> dmList = twitter.getDirectMessages(load);
List<Message> result = new ArrayList<>();
List<Message> result = new LinkedList<>();
for (DirectMessage dm : dmList) {
result.add(getMessage(dm));
}
@ -607,7 +607,7 @@ public class TwitterEngine {
* @return TwitterUser
*/
private List<TwitterUser> convertUserList(List<User> users) {
List<TwitterUser> result = new ArrayList<>();
List<TwitterUser> result = new LinkedList<>();
for (User user : users) {
TwitterUser item = new TwitterUser(user);
result.add(item);
@ -623,7 +623,7 @@ public class TwitterEngine {
* @return TwitterStatus
*/
private List<Tweet> convertStatusList(List<Status> statuses) {
List<Tweet> result = new ArrayList<>();
List<Tweet> result = new LinkedList<>();
for (Status status : statuses)
result.add(new Tweet(status));
return result;

View File

@ -11,7 +11,7 @@ import org.nuclearfog.twidda.backend.items.Trend;
import org.nuclearfog.twidda.backend.items.Tweet;
import org.nuclearfog.twidda.backend.items.TwitterUser;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import static android.database.sqlite.SQLiteDatabase.CONFLICT_IGNORE;
@ -195,7 +195,7 @@ public class DatabaseAdapter {
*/
public List<Tweet> getHomeTimeline() {
SQLiteDatabase db = getDbRead();
List<Tweet> tweetList = new ArrayList<>();
List<Tweet> tweetList = new LinkedList<>();
final String SQL_GET_HOME = "SELECT * FROM tweet " +
"INNER JOIN user ON tweet.userID=user.userID " +
"WHERE statusregister&" + HOM_MASK + ">0 " +
@ -219,7 +219,7 @@ public class DatabaseAdapter {
*/
public List<Tweet> getMentions() {
SQLiteDatabase db = getDbRead();
List<Tweet> tweetList = new ArrayList<>();
List<Tweet> tweetList = new LinkedList<>();
final String SQL_GET_HOME = "SELECT * FROM tweet " +
"INNER JOIN user ON tweet.userID=user.userID " +
"WHERE statusregister&" + MEN_MASK + ">0 " +
@ -244,7 +244,7 @@ public class DatabaseAdapter {
*/
public List<Tweet> getUserTweets(long userID) {
SQLiteDatabase db = getDbRead();
List<Tweet> tweetList = new ArrayList<>();
List<Tweet> tweetList = new LinkedList<>();
final String SQL_GET_HOME = "SELECT * FROM tweet " +
"INNER JOIN user ON tweet.userID = user.userID " +
"WHERE statusregister&" + UTW_MASK + ">0 " +
@ -272,7 +272,7 @@ public class DatabaseAdapter {
*/
public List<Tweet> getUserFavs(long ownerID) {
SQLiteDatabase db = getDbRead();
List<Tweet> tweetList = new ArrayList<>();
List<Tweet> tweetList = new LinkedList<>();
final String SQL_GET_HOME = "SELECT * FROM tweet " +
"INNER JOIN favorit on tweet.tweetID = favorit.tweetID " +
"INNER JOIN user ON tweet.userID = user.userID " +
@ -319,7 +319,7 @@ public class DatabaseAdapter {
*/
public List<Tweet> getAnswers(long tweetId) {
SQLiteDatabase db = getDbRead();
List<Tweet> tweetList = new ArrayList<>();
List<Tweet> tweetList = new LinkedList<>();
final String SQL_GET_HOME = "SELECT * FROM tweet " +
"INNER JOIN user ON tweet.userID = user.userID " +
"WHERE tweet.replyID=" + tweetId + " AND statusregister&" + RPL_MASK + ">0 " +
@ -437,7 +437,7 @@ public class DatabaseAdapter {
*/
public List<Trend> getTrends(int woeId) {
SQLiteDatabase db = getDbRead();
List<Trend> trends = new ArrayList<>();
List<Trend> trends = new LinkedList<>();
final String query = "SELECT * FROM trend WHERE woeID=" + woeId + " ORDER BY trendpos ASC";
Cursor cursor = db.rawQuery(query, null);
if (cursor.moveToFirst()) {
@ -460,7 +460,7 @@ public class DatabaseAdapter {
* @return list of direct messages
*/
public List<Message> getMessages() {
List<Message> result = new ArrayList<>();
List<Message> result = new LinkedList<>();
SQLiteDatabase db = getDbRead();
final String query = "SELECT * FROM message ORDER BY messageID DESC LIMIT " + LIMIT;
Cursor cursor = db.rawQuery(query, null);
@ -735,7 +735,7 @@ public class DatabaseAdapter {
private String[] parseMedia(String media) {
int index;
List<String> links = new ArrayList<>();
List<String> links = new LinkedList<>();
do {
index = media.indexOf(';');
if (index > 0 && index < media.length()) {

View File

@ -289,7 +289,7 @@ public class GlobalSettings {
* @return access tokens
*/
public String[] getKeys() {
String out[] = new String[2];
String[] out = new String[2];
out[0] = key1;
out[1] = key2;
return out;

View File

@ -1,8 +1,8 @@
package org.nuclearfog.twidda.fragment;
import android.content.Intent;
import android.os.Bundle;
import android.os.AsyncTask.Status;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v4.widget.SwipeRefreshLayout;
@ -19,15 +19,12 @@ import org.nuclearfog.twidda.adapter.MessageAdapter.OnItemSelected;
import org.nuclearfog.twidda.backend.items.Message;
import org.nuclearfog.twidda.database.GlobalSettings;
import org.nuclearfog.twidda.fragment.backend.MessageLoader;
import org.nuclearfog.twidda.fragment.backend.MessageLoader.Mode;
import org.nuclearfog.twidda.window.MessagePopup;
import org.nuclearfog.twidda.window.SearchPage;
import org.nuclearfog.twidda.window.UserProfile;
import static org.nuclearfog.twidda.fragment.backend.MessageLoader.Mode.DEL;
import static org.nuclearfog.twidda.fragment.backend.MessageLoader.Mode.LOAD;
public class MessageListFragment extends Fragment implements OnRefreshListener, OnItemSelected {
private MessageLoader messageTask;
@ -60,12 +57,11 @@ public class MessageListFragment extends Fragment implements OnRefreshListener,
}
@Override
public void onStart() {
super.onStart();
if (messageTask == null) {
messageTask = new MessageLoader(root, LOAD);
messageTask = new MessageLoader(root, Mode.LOAD);
messageTask.execute();
}
}
@ -81,14 +77,14 @@ public class MessageListFragment extends Fragment implements OnRefreshListener,
@Override
public void onRefresh() {
messageTask = new MessageLoader(root, LOAD);
messageTask = new MessageLoader(root, Mode.LOAD);
messageTask.execute();
}
@Override
public void onClick(String tag) {
if(!reload.isRefreshing()) {
if (!reload.isRefreshing()) {
Intent intent = new Intent(getContext(), SearchPage.class);
intent.putExtra("search", tag);
startActivity(intent);
@ -97,31 +93,25 @@ public class MessageListFragment extends Fragment implements OnRefreshListener,
@Override
public void onAnswer(Message message) {
if(!reload.isRefreshing()) {
Intent sendDm = new Intent(getContext(), MessagePopup.class);
sendDm.putExtra("username", message.getSender().getScreenname());
startActivity(sendDm);
}
}
@Override
public void onDelete(Message message) {
if(!reload.isRefreshing()) {
messageTask = new MessageLoader(root, DEL);
messageTask.execute(message.getId());
}
}
@Override
public void onProfileClick(Message message) {
if(!reload.isRefreshing()) {
Intent profile = new Intent(getContext(), UserProfile.class);
profile.putExtra("userID", message.getSender().getId());
profile.putExtra("username", message.getSender().getScreenname());
startActivity(profile);
public void onClick(Message message, Action action) {
if (!reload.isRefreshing()) {
switch (action) {
case ANSWER:
Intent sendDm = new Intent(getContext(), MessagePopup.class);
sendDm.putExtra("username", message.getSender().getScreenname());
startActivity(sendDm);
break;
case DELETE:
messageTask = new MessageLoader(root, Mode.DEL);
messageTask.execute(message.getId());
break;
case PROFILE:
Intent profile = new Intent(getContext(), UserProfile.class);
profile.putExtra("userID", message.getSender().getId());
profile.putExtra("username", message.getSender().getScreenname());
startActivity(profile);
break;
}
}
}
}

View File

@ -51,8 +51,14 @@ public class MessageLoader extends AsyncTask<Long, Void, Boolean> {
protected void onPreExecute() {
if (ui.get() == null)
return;
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
reload.setRefreshing(true);
final SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
reload.postDelayed(new Runnable() {
@Override
public void run() {
if (getStatus() != Status.FINISHED)
reload.setRefreshing(true);
}
}, 500);
}

View File

@ -54,8 +54,14 @@ public class TrendLoader extends AsyncTask<Void, Void, Boolean> {
protected void onPreExecute() {
if (ui.get() == null)
return;
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
reload.setRefreshing(true);
final SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
reload.postDelayed(new Runnable() {
@Override
public void run() {
if (getStatus() != Status.FINISHED)
reload.setRefreshing(true);
}
}, 500);
}

View File

@ -7,7 +7,6 @@ import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import org.nuclearfog.twidda.BuildConfig;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.adapter.TweetAdapter;
import org.nuclearfog.twidda.backend.ErrorHandler;
@ -21,7 +20,6 @@ import java.util.List;
import twitter4j.TwitterException;
public class TweetLoader extends AsyncTask<Object, Void, Boolean> {
public enum Mode {
@ -58,16 +56,20 @@ public class TweetLoader extends AsyncTask<Object, Void, Boolean> {
protected void onPreExecute() {
if (ui.get() == null)
return;
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
reload.setRefreshing(true);
final SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
reload.postDelayed(new Runnable() {
@Override
public void run() {
if (getStatus() != Status.FINISHED)
reload.setRefreshing(true);
}
}, 500);
}
@Override
protected Boolean doInBackground(Object[] param) {
long sinceId = 1;
try {
switch (mode) {
case DB_HOME:
@ -130,7 +132,7 @@ public class TweetLoader extends AsyncTask<Object, Void, Boolean> {
case DB_ANS:
tweetId = (long) param[0];
tweets = db.getAnswers(tweetId);
if (tweets.isEmpty() || !settings.getAnswerLoad())
if (!tweets.isEmpty() || !settings.getAnswerLoad())
break;
case TWEET_ANS:

View File

@ -49,9 +49,14 @@ public class UserLoader extends AsyncTask<Object, Void, Boolean> {
protected void onPreExecute() {
if (ui.get() == null)
return;
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
reload.setRefreshing(true);
final SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
reload.postDelayed(new Runnable() {
@Override
public void run() {
if (getStatus() != Status.FINISHED)
reload.setRefreshing(true);
}
}, 500);
}

View File

@ -60,7 +60,7 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener, O
username = param.getString("username");
} else if (link != null) {
getTweet(link.getPath());
} else if(BuildConfig.DEBUG) {
} else if (BuildConfig.DEBUG) {
throw new AssertionError();
}