offline: position fixes for heading

This commit is contained in:
Andrew Dolgov 2015-05-11 12:42:38 +03:00
parent 9ee41fc190
commit 972588b485
4 changed files with 94 additions and 42 deletions

View File

@ -9,6 +9,7 @@
android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />

View File

@ -37,6 +37,7 @@ public class OfflineFeedCategoriesFragment extends Fragment implements OnItemCli
private Cursor m_cursor;
private OfflineFeedsActivity m_activity;
private SwipeRefreshLayout m_swipeLayout;
private ListView m_list;
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
@ -45,7 +46,7 @@ public class OfflineFeedCategoriesFragment extends Fragment implements OnItemCli
getActivity().getMenuInflater().inflate(R.menu.category_menu, menu);
AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
Cursor cursor = (Cursor)m_adapter.getItem(info.position);
Cursor cursor = (Cursor)getCatAtPosition(info.position);
if (cursor != null)
menu.setHeaderTitle(cursor.getString(cursor.getColumnIndex("title")));
@ -139,17 +140,22 @@ public class OfflineFeedCategoriesFragment extends Fragment implements OnItemCli
}
});
ListView list = (ListView)view.findViewById(R.id.feeds);
m_list = (ListView)view.findViewById(R.id.feeds);
if (m_activity.isSmallScreen()) {
View layout = inflater.inflate(R.layout.headlines_heading_spacer, m_list, false);
m_list.addHeaderView(layout);
}
m_cursor = createCursor();
m_adapter = new FeedCategoryListAdapter(getActivity(), R.layout.feeds_row, m_cursor,
new String[] { "title", "unread" }, new int[] { R.id.title, R.id.unread_counter }, 0);
list.setAdapter(m_adapter);
list.setOnItemClickListener(this);
list.setEmptyView(view.findViewById(R.id.no_feeds));
registerForContextMenu(list);
m_list.setAdapter(m_adapter);
m_list.setOnItemClickListener(this);
m_list.setEmptyView(view.findViewById(R.id.no_feeds));
registerForContextMenu(m_list);
return view;
}
@ -313,16 +319,36 @@ public class OfflineFeedCategoriesFragment extends Fragment implements OnItemCli
}
public int getCatIdAtPosition(int position) {
Cursor c = (Cursor)m_adapter.getItem(position);
if (c != null) {
int catId = c.getInt(0);
return catId;
}
/* if (m_list != null) {
Cursor c = (Cursor) m_list.getItemAtPosition(position);
if (c != null) {
int catId = c.getInt(0);
return catId;
}
} */
Cursor tmp = getCatAtPosition(position);
if (tmp != null) {
int id = tmp.getInt(0);
return id;
}
return -10000;
}
public Cursor getCatAtPosition(int position) {
if (m_list != null) {
return (Cursor) m_list.getItemAtPosition(position);
}
return null;
}
public void setSelectedFeedId(int feedId) {
m_selectedCatId = feedId;
refresh();

View File

@ -46,6 +46,7 @@ public class OfflineFeedsFragment extends Fragment implements OnItemClickListene
private OfflineFeedsActivity m_activity;
private SwipeRefreshLayout m_swipeLayout;
private boolean m_enableParentBtn = false;
private ListView m_list;
public void initialize(int catId, boolean enableParentBtn) {
m_catId = catId;
@ -90,7 +91,7 @@ public class OfflineFeedsFragment extends Fragment implements OnItemClickListene
getActivity().getMenuInflater().inflate(R.menu.feed_menu, menu);
AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
Cursor cursor = (Cursor)m_adapter.getItem(info.position);
Cursor cursor = (Cursor)getFeedAtPosition(info.position);
if (cursor != null)
menu.setHeaderTitle(cursor.getString(cursor.getColumnIndex("title")));
@ -152,7 +153,12 @@ public class OfflineFeedsFragment extends Fragment implements OnItemClickListene
}
});
ListView list = (ListView)view.findViewById(R.id.feeds);
m_list = (ListView)view.findViewById(R.id.feeds);
if (m_activity.isSmallScreen()) {
View layout = inflater.inflate(R.layout.headlines_heading_spacer, m_list, false);
m_list.addHeaderView(layout);
}
if (m_enableParentBtn) {
View layout = inflater.inflate(R.layout.feeds_goback, container, false);
@ -167,7 +173,7 @@ public class OfflineFeedsFragment extends Fragment implements OnItemClickListene
}
});
list.addHeaderView(layout, null, false);
m_list.addHeaderView(layout, null, false);
}
m_cursor = createCursor();
@ -175,10 +181,10 @@ public class OfflineFeedsFragment extends Fragment implements OnItemClickListene
m_adapter = new FeedListAdapter(getActivity(), R.layout.feeds_row, m_cursor,
new String[] { "title", "unread" }, new int[] { R.id.title, R.id.unread_counter }, 0);
list.setAdapter(m_adapter);
list.setOnItemClickListener(this);
list.setEmptyView(view.findViewById(R.id.no_feeds));
registerForContextMenu(list);
m_list.setAdapter(m_adapter);
m_list.setOnItemClickListener(this);
m_list.setEmptyView(view.findViewById(R.id.no_feeds));
registerForContextMenu(m_list);
m_enableFeedIcons = m_prefs.getBoolean("download_feed_icons", false);
@ -374,16 +380,35 @@ public class OfflineFeedsFragment extends Fragment implements OnItemClickListene
}
public int getFeedIdAtPosition(int position) {
Cursor c = (Cursor)m_adapter.getItem(position);
if (c != null) {
int feedId = c.getInt(0);
return feedId;
}
/* if (m_list != null) {
Cursor c = (Cursor) m_list.getItemAtPosition(position);
if (c != null) {
int feedId = c.getInt(0);
return feedId;
}
} */
Cursor tmp = getFeedAtPosition(position);
if (tmp != null) {
int id = tmp.getInt(0);
return id;
}
return -10000;
}
public Cursor getFeedAtPosition(int position) {
if (m_list != null) {
return (Cursor) m_list.getItemAtPosition(position);
}
return null;
}
public void setSelectedFeedId(int feedId) {
m_selectedFeedId = feedId;
refresh();

View File

@ -70,6 +70,7 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis
private SwipeRefreshLayout m_swipeLayout;
private boolean m_compactLayoutMode = false;
private ListView m_list;
public void initialize(int feedId, boolean isCat, boolean compactMode) {
m_feedId = feedId;
@ -302,12 +303,12 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis
m_cursor = createCursor();
ListView list = (ListView)view.findViewById(R.id.headlines_list);
m_list = (ListView)view.findViewById(R.id.headlines_list);
/* if (!m_compactLayoutMode) {
list.setDividerHeight(0);
list.setDivider(null);
} */
if (m_activity.isSmallScreen()) {
View layout = inflater.inflate(R.layout.headlines_heading_spacer, m_list, false);
m_list.addHeaderView(layout);
}
if (m_prefs.getBoolean("headlines_mark_read_scroll", false)) {
WindowManager wm = (WindowManager) m_activity.getSystemService(Context.WINDOW_SERVICE);
@ -318,18 +319,17 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis
layout.setLayoutParams(new ListView.LayoutParams(ListView.LayoutParams.MATCH_PARENT, screenHeight));
list.addFooterView(layout, null, false);
m_list.addFooterView(layout, null, false);
}
m_adapter = new ArticleListAdapter(getActivity(), R.layout.headlines_row, m_cursor,
new String[] { "title" }, new int[] { R.id.title }, 0);
list.setAdapter(m_adapter);
list.setOnItemClickListener(this);
list.setOnScrollListener(this);
//list.setEmptyView(view.findViewById(R.id.no_headlines));
registerForContextMenu(list);
m_list.setAdapter(m_adapter);
m_list.setOnItemClickListener(this);
m_list.setOnScrollListener(this);
registerForContextMenu(m_list);
return view;
}
@ -821,7 +821,7 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis
int id = c.getInt(0);
return id;
} */
return (int) m_adapter.getItemId(position);
}