(very basic) swipe to dismiss for recycler view
This commit is contained in:
parent
3c130c019e
commit
e8fe00eecd
|
@ -26,6 +26,7 @@ import android.support.v7.widget.DefaultItemAnimator;
|
||||||
import android.support.v7.widget.DividerItemDecoration;
|
import android.support.v7.widget.DividerItemDecoration;
|
||||||
import android.support.v7.widget.LinearLayoutManager;
|
import android.support.v7.widget.LinearLayoutManager;
|
||||||
import android.support.v7.widget.RecyclerView;
|
import android.support.v7.widget.RecyclerView;
|
||||||
|
import android.support.v7.widget.helper.ItemTouchHelper;
|
||||||
import android.text.Html;
|
import android.text.Html;
|
||||||
import android.transition.Fade;
|
import android.transition.Fade;
|
||||||
import android.transition.Transition;
|
import android.transition.Transition;
|
||||||
|
@ -340,6 +341,42 @@ public class HeadlinesFragment extends Fragment {
|
||||||
|
|
||||||
boolean enableSwipeToDismiss = m_prefs.getBoolean("headlines_swipe_to_dismiss", true);
|
boolean enableSwipeToDismiss = m_prefs.getBoolean("headlines_swipe_to_dismiss", true);
|
||||||
|
|
||||||
|
if (enableSwipeToDismiss) {
|
||||||
|
|
||||||
|
ItemTouchHelper swipeHelper = new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.RIGHT) {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
|
||||||
|
|
||||||
|
int position = viewHolder.getAdapterPosition() - m_adapter.getHeaderCount();
|
||||||
|
|
||||||
|
try {
|
||||||
|
Article article = getArticleAtPosition(position);
|
||||||
|
|
||||||
|
if (article != null) {
|
||||||
|
if (article.unread) {
|
||||||
|
article.unread = false;
|
||||||
|
m_activity.saveArticleUnread(article);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
m_articles.remove(position);
|
||||||
|
m_adapter.notifyDataSetChanged();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
swipeHelper.attachToRecyclerView(m_list);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
if (! (getActivity() instanceof DetailActivity)) {
|
if (! (getActivity() instanceof DetailActivity)) {
|
||||||
|
|
||||||
m_list.setOnTouchListener(new ShowHideOnScroll(fab));
|
m_list.setOnTouchListener(new ShowHideOnScroll(fab));
|
||||||
|
@ -451,7 +488,7 @@ public class HeadlinesFragment extends Fragment {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!enableSwipeToDismiss) registerForContextMenu(m_list);
|
//if (!enableSwipeToDismiss) registerForContextMenu(m_list);
|
||||||
|
|
||||||
if (m_activity.isSmallScreen()) {
|
if (m_activity.isSmallScreen()) {
|
||||||
m_activity.setTitle(m_feed.title);
|
m_activity.setTitle(m_feed.title);
|
||||||
|
@ -800,13 +837,13 @@ public class HeadlinesFragment extends Fragment {
|
||||||
|
|
||||||
//holder.position = position;
|
//holder.position = position;
|
||||||
|
|
||||||
holder.view.setOnLongClickListener(new View.OnLongClickListener() {
|
/*holder.view.setOnLongClickListener(new View.OnLongClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public boolean onLongClick(View v) {
|
public boolean onLongClick(View v) {
|
||||||
m_activity.openContextMenu(v);
|
m_activity.openContextMenu(v);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
});
|
});*/
|
||||||
|
|
||||||
holder.view.setOnClickListener(new OnClickListener() {
|
holder.view.setOnClickListener(new OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -1572,7 +1609,13 @@ public class HeadlinesFragment extends Fragment {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Article getArticleAtPosition(int position) {
|
public Article getArticleAtPosition(int position) {
|
||||||
return m_articles.get(position);
|
try {
|
||||||
|
return m_articles.get(position);
|
||||||
|
} catch (ArrayIndexOutOfBoundsException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Article getArticleById(int id) {
|
public Article getArticleById(int id) {
|
||||||
|
|
|
@ -84,12 +84,12 @@
|
||||||
android:summary="@string/pref_headlines_show_content_long"
|
android:summary="@string/pref_headlines_show_content_long"
|
||||||
android:title="@string/pref_headlines_show_content" />
|
android:title="@string/pref_headlines_show_content" />
|
||||||
|
|
||||||
<!-- <org.fox.ttrss.util.LessBrokenSwitchPreference
|
<org.fox.ttrss.util.LessBrokenSwitchPreference
|
||||||
android:defaultValue="true"
|
android:defaultValue="true"
|
||||||
android:dependency="headlines_mark_read_scroll"
|
android:dependency="headlines_mark_read_scroll"
|
||||||
android:key="headlines_swipe_to_dismiss"
|
android:key="headlines_swipe_to_dismiss"
|
||||||
android:summary="@string/pref_headlines_swipe_to_dismiss_long"
|
android:summary="@string/pref_headlines_swipe_to_dismiss_long"
|
||||||
android:title="@string/pref_headlines_swipe_to_dismiss" /> -->
|
android:title="@string/pref_headlines_swipe_to_dismiss" />
|
||||||
|
|
||||||
<org.fox.ttrss.util.LessBrokenSwitchPreference
|
<org.fox.ttrss.util.LessBrokenSwitchPreference
|
||||||
android:defaultValue="false"
|
android:defaultValue="false"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user