2020-07-01 17:08:28 +00:00
|
|
|
package awais.instagrabber.adapters;
|
|
|
|
|
|
|
|
import android.content.Context;
|
|
|
|
import android.database.Cursor;
|
2020-09-05 17:02:54 +00:00
|
|
|
import android.util.Log;
|
2020-07-01 17:08:28 +00:00
|
|
|
import android.view.LayoutInflater;
|
|
|
|
import android.view.View;
|
|
|
|
import android.view.ViewGroup;
|
|
|
|
|
|
|
|
import androidx.annotation.NonNull;
|
|
|
|
import androidx.cursoradapter.widget.CursorAdapter;
|
|
|
|
|
2020-09-27 01:02:31 +00:00
|
|
|
import awais.instagrabber.R;
|
2020-09-05 17:02:54 +00:00
|
|
|
import awais.instagrabber.databinding.ItemSuggestionBinding;
|
|
|
|
import awais.instagrabber.models.enums.SuggestionType;
|
2020-07-01 17:08:28 +00:00
|
|
|
|
|
|
|
public final class SuggestionsAdapter extends CursorAdapter {
|
2020-09-05 17:02:54 +00:00
|
|
|
private static final String TAG = "SuggestionsAdapter";
|
|
|
|
|
|
|
|
private final OnSuggestionClickListener onSuggestionClickListener;
|
2020-07-01 17:08:28 +00:00
|
|
|
|
2020-09-05 17:02:54 +00:00
|
|
|
public SuggestionsAdapter(final Context context,
|
|
|
|
final OnSuggestionClickListener onSuggestionClickListener) {
|
2020-07-01 17:08:28 +00:00
|
|
|
super(context, null, FLAG_REGISTER_CONTENT_OBSERVER);
|
2020-09-05 17:02:54 +00:00
|
|
|
this.onSuggestionClickListener = onSuggestionClickListener;
|
2020-07-01 17:08:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public View newView(final Context context, final Cursor cursor, final ViewGroup parent) {
|
2020-09-05 17:02:54 +00:00
|
|
|
final LayoutInflater layoutInflater = LayoutInflater.from(context);
|
|
|
|
final ItemSuggestionBinding binding = ItemSuggestionBinding.inflate(layoutInflater, parent, false);
|
|
|
|
return binding.getRoot();
|
|
|
|
// return layoutInflater.inflate(R.layout.item_suggestion, parent, false);
|
2020-07-01 17:08:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void bindView(@NonNull final View view, final Context context, @NonNull final Cursor cursor) {
|
|
|
|
// i, username, fullname, type, picUrl, verified
|
|
|
|
// 0, 1 , 2 , 3 , 4 , 5
|
2020-09-05 17:02:54 +00:00
|
|
|
final String fullName = cursor.getString(2);
|
2020-07-01 17:08:28 +00:00
|
|
|
String username = cursor.getString(1);
|
2020-09-27 01:02:31 +00:00
|
|
|
String picUrl = cursor.getString(4);
|
2020-07-01 17:08:28 +00:00
|
|
|
final boolean verified = cursor.getString(5).charAt(0) == 't';
|
|
|
|
|
2020-09-05 17:02:54 +00:00
|
|
|
final String type = cursor.getString(3);
|
|
|
|
SuggestionType suggestionType = null;
|
|
|
|
try {
|
|
|
|
suggestionType = SuggestionType.valueOf(type);
|
|
|
|
} catch (IllegalArgumentException e) {
|
|
|
|
Log.e(TAG, "Unknown suggestion type: " + type, e);
|
|
|
|
}
|
|
|
|
if (suggestionType == null) return;
|
|
|
|
final String query;
|
|
|
|
switch (suggestionType) {
|
|
|
|
case TYPE_USER:
|
|
|
|
username = '@' + username;
|
|
|
|
query = username;
|
|
|
|
break;
|
|
|
|
case TYPE_HASHTAG:
|
|
|
|
username = '#' + username;
|
|
|
|
query = username;
|
|
|
|
break;
|
|
|
|
case TYPE_LOCATION:
|
|
|
|
query = fullName;
|
2020-09-27 01:02:31 +00:00
|
|
|
picUrl = "res:/" + R.drawable.ic_location;
|
2020-09-05 17:02:54 +00:00
|
|
|
break;
|
|
|
|
default:
|
|
|
|
return; // will never come here
|
|
|
|
}
|
2020-07-01 17:08:28 +00:00
|
|
|
|
2020-09-05 17:02:54 +00:00
|
|
|
if (onSuggestionClickListener != null) {
|
|
|
|
final SuggestionType finalSuggestionType = suggestionType;
|
|
|
|
view.setOnClickListener(v -> onSuggestionClickListener.onSuggestionClick(finalSuggestionType, query));
|
|
|
|
}
|
|
|
|
final ItemSuggestionBinding binding = ItemSuggestionBinding.bind(view);
|
|
|
|
binding.isVerified.setVisibility(verified ? View.VISIBLE : View.GONE);
|
|
|
|
binding.tvUsername.setText(username);
|
|
|
|
if (suggestionType.equals(SuggestionType.TYPE_LOCATION)) {
|
|
|
|
binding.tvFullName.setVisibility(View.GONE);
|
|
|
|
} else {
|
|
|
|
binding.tvFullName.setVisibility(View.VISIBLE);
|
|
|
|
binding.tvFullName.setText(fullName);
|
|
|
|
}
|
|
|
|
binding.ivProfilePic.setImageURI(picUrl);
|
|
|
|
}
|
2020-07-01 17:08:28 +00:00
|
|
|
|
2020-09-05 17:02:54 +00:00
|
|
|
public interface OnSuggestionClickListener {
|
|
|
|
void onSuggestionClick(final SuggestionType type, final String query);
|
2020-07-01 17:08:28 +00:00
|
|
|
}
|
|
|
|
}
|