Some layout improvements and fixes
This commit is contained in:
@ -70,7 +70,7 @@ public class MessageListFragment extends Fragment implements ListHolder {
|
||||
private Label currentLabel;
|
||||
private MenuItem emptyTrashMenuItem;
|
||||
private MessageRepository messageRepo;
|
||||
private List<Plaintext> messages;
|
||||
private boolean activateOnItemClick;
|
||||
|
||||
/**
|
||||
* Mandatory empty constructor for the fragment manager to instantiate the
|
||||
@ -105,7 +105,7 @@ public class MessageListFragment extends Fragment implements ListHolder {
|
||||
}
|
||||
|
||||
private void doUpdateList(Label label) {
|
||||
messages = Singleton.getMessageRepository(getContext()).findMessages(label);
|
||||
List<Plaintext> messages = Singleton.getMessageRepository(getContext()).findMessages(label);
|
||||
if (getActivity() instanceof ActionBarListener) {
|
||||
if (label != null) {
|
||||
((ActionBarListener) getActivity()).updateTitle(label.toString());
|
||||
@ -153,6 +153,7 @@ public class MessageListFragment extends Fragment implements ListHolder {
|
||||
|
||||
//adapter
|
||||
adapter = new SwipeableMessageAdapter();
|
||||
adapter.setActivateOnItemClick(activateOnItemClick);
|
||||
adapter.setEventListener(new SwipeableMessageAdapter.EventListener() {
|
||||
@Override
|
||||
public void onItemDeleted(Plaintext item) {
|
||||
@ -174,6 +175,7 @@ public class MessageListFragment extends Fragment implements ListHolder {
|
||||
@Override
|
||||
public void onItemViewClicked(View v, boolean pinned) {
|
||||
int position = recyclerView.getChildAdapterPosition(v);
|
||||
adapter.setSelectedPosition(position);
|
||||
if (position != RecyclerView.NO_POSITION) {
|
||||
Plaintext item = adapter.getItem(position);
|
||||
((MainActivity) getActivity()).onItemSelected(item);
|
||||
@ -263,6 +265,9 @@ public class MessageListFragment extends Fragment implements ListHolder {
|
||||
|
||||
@Override
|
||||
public void setActivateOnItemClick(boolean activateOnItemClick) {
|
||||
// TODO
|
||||
if (adapter != null) {
|
||||
adapter.setActivateOnItemClick(activateOnItemClick);
|
||||
}
|
||||
this.activateOnItemClick = activateOnItemClick;
|
||||
}
|
||||
}
|
||||
|
@ -34,7 +34,6 @@ import ch.dissem.bitmessage.entity.BitmessageAddress;
|
||||
/**
|
||||
* @author Christian Basler
|
||||
*/
|
||||
|
||||
public class AddressSelectorAdapter
|
||||
extends RecyclerView.Adapter<AddressSelectorAdapter.ViewHolder> {
|
||||
|
||||
@ -88,15 +87,6 @@ public class AddressSelectorAdapter
|
||||
}
|
||||
}
|
||||
|
||||
private static class Selectable<T> {
|
||||
private final T data;
|
||||
private boolean selected = false;
|
||||
|
||||
private Selectable(T data) {
|
||||
this.data = data;
|
||||
}
|
||||
}
|
||||
|
||||
public List<BitmessageAddress> getSelected() {
|
||||
List<BitmessageAddress> result = new LinkedList<>();
|
||||
for (Selectable<BitmessageAddress> selectable : data) {
|
||||
|
@ -0,0 +1,29 @@
|
||||
/*
|
||||
* Copyright 2016 Christian Basler
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package ch.dissem.apps.abit.adapter;
|
||||
|
||||
/**
|
||||
* @author Christian Basler
|
||||
*/
|
||||
class Selectable<T> {
|
||||
final T data;
|
||||
boolean selected = false;
|
||||
|
||||
Selectable(T data) {
|
||||
this.data = data;
|
||||
}
|
||||
}
|
@ -17,6 +17,7 @@
|
||||
|
||||
package ch.dissem.apps.abit.adapter;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.graphics.Typeface;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
@ -50,7 +51,7 @@ import static ch.dissem.apps.abit.util.Strings.normalizeWhitespaces;
|
||||
*
|
||||
* @author Christian Basler
|
||||
* @see <a href="https://github.com/h6ah4i/android-advancedrecyclerview">
|
||||
* https://github.com/h6ah4i/android-advancedrecyclerview</a>
|
||||
* https://github.com/h6ah4i/android-advancedrecyclerview</a>
|
||||
*/
|
||||
public class SwipeableMessageAdapter
|
||||
extends RecyclerView.Adapter<SwipeableMessageAdapter.ViewHolder>
|
||||
@ -62,6 +63,12 @@ public class SwipeableMessageAdapter
|
||||
private View.OnClickListener swipeableViewContainerOnClickListener;
|
||||
|
||||
private Label label;
|
||||
private int selectedPosition;
|
||||
private boolean activateOnItemClick;
|
||||
|
||||
public void setActivateOnItemClick(boolean activateOnItemClick) {
|
||||
this.activateOnItemClick = activateOnItemClick;
|
||||
}
|
||||
|
||||
public interface EventListener {
|
||||
void onItemDeleted(Plaintext item);
|
||||
@ -71,14 +78,15 @@ public class SwipeableMessageAdapter
|
||||
void onItemViewClicked(View v, boolean pinned);
|
||||
}
|
||||
|
||||
public static class ViewHolder extends AbstractSwipeableItemViewHolder {
|
||||
@SuppressWarnings("WeakerAccess")
|
||||
static class ViewHolder extends AbstractSwipeableItemViewHolder {
|
||||
public FrameLayout container;
|
||||
public final ImageView avatar;
|
||||
public final TextView sender;
|
||||
public final TextView subject;
|
||||
public final TextView extract;
|
||||
|
||||
public ViewHolder(View v) {
|
||||
ViewHolder(View v) {
|
||||
super(v);
|
||||
container = (FrameLayout) v.findViewById(R.id.container);
|
||||
avatar = (ImageView) v.findViewById(R.id.avatar);
|
||||
@ -150,6 +158,14 @@ public class SwipeableMessageAdapter
|
||||
public void onBindViewHolder(ViewHolder holder, int position) {
|
||||
final Plaintext item = data.get(position);
|
||||
|
||||
if (activateOnItemClick) {
|
||||
holder.container.setBackgroundResource(
|
||||
position == selectedPosition
|
||||
? R.drawable.bg_item_selected_state
|
||||
: R.drawable.bg_item_normal_state
|
||||
);
|
||||
}
|
||||
|
||||
// set listeners
|
||||
// (if the item is *pinned*, click event comes to the itemView)
|
||||
holder.itemView.setOnClickListener(itemViewOnClickListener);
|
||||
@ -184,6 +200,7 @@ public class SwipeableMessageAdapter
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressLint("SwitchIntDef")
|
||||
public void onSetSwipeBackground(ViewHolder holder, int position, int type) {
|
||||
int bgRes = 0;
|
||||
switch (type) {
|
||||
@ -205,6 +222,7 @@ public class SwipeableMessageAdapter
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressLint("SwitchIntDef")
|
||||
public SwipeResultAction onSwipeItem(ViewHolder holder, final int position, int result) {
|
||||
switch (result) {
|
||||
// swipe right
|
||||
@ -223,6 +241,13 @@ public class SwipeableMessageAdapter
|
||||
this.eventListener = eventListener;
|
||||
}
|
||||
|
||||
public void setSelectedPosition(int selectedPosition) {
|
||||
int oldPosition = this.selectedPosition;
|
||||
this.selectedPosition = selectedPosition;
|
||||
notifyItemChanged(oldPosition);
|
||||
notifyItemChanged(selectedPosition);
|
||||
}
|
||||
|
||||
private static class SwipeLeftResultAction extends SwipeResultActionMoveToSwipedDirection {
|
||||
private SwipeableMessageAdapter adapter;
|
||||
private final int position;
|
||||
|
Reference in New Issue
Block a user