Quantcast
Channel: Active questions tagged feed - Stack Overflow
Viewing all articles
Browse latest Browse all 542

How to save rss feed database In Android?

$
0
0

I use RSS for SASParser and then display it in ListView.I do not know how to save parsar string database.How to display parser database android I tried several times.Tell me what you know.Should I to it right after parsing or after displaying

Example code would be greatly appreciated.

Thank you in advance!

EDIT: My main activity AsyncTask:

import android.app.Activity;import android.app.AlertDialog;import android.os.AsyncTask;import android.os.Bundle;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuInflater;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;import android.widget.RelativeLayout;import androidx.annotation.Nullable;import androidx.fragment.app.Fragment;import androidx.recyclerview.widget.LinearLayoutManager;import androidx.recyclerview.widget.RecyclerView;import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;import com.hindhilive.newspaper.util.Helper;import com.hindhilive.newspaper.util.InfiniteRecyclerViewAdapter;import com.hindhilive.newspaper.util.Log;import com.hindhilive.newspaper.util.ThemeUtils;import com.hindhilive.newspaper.util.ViewModeUtils;import com.google.android.gms.ads.AdView;import org.xml.sax.InputSource;import org.xml.sax.SAXException;import org.xml.sax.XMLReader;import java.io.IOException;import java.net.URL;import java.util.ArrayList;import javax.xml.parsers.ParserConfigurationException;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;/** * This activity is used to display a list of rss items */public class RssFragment extends Fragment {    private RSSFeed rssFeed = null;    private ArrayList<RSSItem> postsList;    private RssAdapter listAdapter;    private ViewModeUtils viewModeUtils;    private SwipeRefreshLayout swipeRefreshLayout;    private Activity mAct;    private RelativeLayout ll;    private String url;    private AdView mAdView;    private View rootView;    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        ll = (RelativeLayout) inflater.inflate(R.layout.fragment_list_refresh, container, false);        return ll;    }    @Override    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {        super.onViewCreated(view, savedInstanceState);        setHasOptionsMenu(true);        RecyclerView listView = ll.findViewById(R.id.list);        postsList = new ArrayList<>();        listAdapter = new RssAdapter(getContext(), postsList);        listAdapter.setModeAndNotify(InfiniteRecyclerViewAdapter.MODE_PROGRESS);        listView.setAdapter(listAdapter);        listView.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));        swipeRefreshLayout = ll.findViewById(R.id.swipeRefreshLayout);        swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {            @Override            public void onRefresh() {                refreshItems();            }        });    }    @Override    public void onActivityCreated(Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);        mAct = getActivity();//        url = RssFragment.this.getArguments().getStringArray(MainActivity.FRAGMENT_DATA)[0];        refreshItems();    }    private class RssTask extends AsyncTask<Void, Void, Void> {        @Override        protected Void doInBackground(Void... arg0) {            try {                URL rssUrl = new URL("http://www.rssmix.com/u/12872549/rss.xml");                SAXParserFactory mySAXParserFactory = SAXParserFactory.newInstance();                SAXParser mySAXParser = mySAXParserFactory.newSAXParser();                XMLReader myXMLReader = mySAXParser.getXMLReader();                RSSHandler myRSSHandler = new RSSHandler();                myXMLReader.setContentHandler(myRSSHandler);                InputSource myInputSource = new InputSource(rssUrl.openStream());                myXMLReader.parse(myInputSource);                rssFeed = myRSSHandler.getFeed();            } catch (ParserConfigurationException | IOException | SAXException e) {                Log.printStackTrace(e);            }            return null;        }        @Override        protected void onPostExecute(Void result) {            if (rssFeed != null) {                if (rssFeed.getList().size() > 0) {                    postsList.addAll(rssFeed.getList());                }                listAdapter.setHasMore(false);                listAdapter.setModeAndNotify(InfiniteRecyclerViewAdapter.MODE_LIST);                swipeRefreshLayout.setRefreshing(false);            } else {                String message = null;                if (!url.startsWith("http"))                    message = "Debug info: '" + url +"' is most likely not a valid RSS url. Make sure the url entered in your configuration starts with 'http' and verify if it's valid XML using https://validator.w3.org/feed/";                Helper.noConnection(mAct, message);                listAdapter.setModeAndNotify(InfiniteRecyclerViewAdapter.MODE_EMPTY);                swipeRefreshLayout.setRefreshing(false);            }            super.onPostExecute(result);        }    }    @Override    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {        inflater.inflate(R.menu.rss_menu, menu);        viewModeUtils = new ViewModeUtils(getContext(), getClass());        viewModeUtils.inflateOptionsMenu(menu, inflater);        ThemeUtils.tintAllIcons(menu, mAct);    }    private void refreshItems() {        postsList.clear();        listAdapter.setModeAndNotify(InfiniteRecyclerViewAdapter.MODE_PROGRESS);        new RssTask().execute();    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        viewModeUtils.handleSelection(item, new ViewModeUtils.ChangeListener() {            @Override            public void modeChanged() {                listAdapter.notifyDataSetChanged();            }        });        switch (item.getItemId()) {            case R.id.info:                //show information about the feed in general in a dialog                if (rssFeed != null) {                    String FeedTitle = (rssFeed.getTitle());                    String FeedDescription = (rssFeed.getDescription());                    //String FeedPubdate = (myRssFeed.getPubdate()); most times not present                    String FeedLink = (rssFeed.getLink());                    AlertDialog.Builder builder = new AlertDialog.Builder(mAct);                    String titlevalue = getResources().getString(R.string.feed_title_value);                    String descriptionvalue = getResources().getString(R.string.feed_description_value);                    String linkvalue = getResources().getString(R.string.feed_link_value);                    if (FeedLink.equals("")) {                        builder.setMessage(titlevalue +": \n" + FeedTitle +"\n\n" + descriptionvalue +": \n" + FeedDescription);                    } else {                        builder.setMessage(titlevalue +": \n" + FeedTitle +"\n\n" + descriptionvalue +": \n" + FeedDescription +"\n\n" + linkvalue +": \n" + FeedLink);                    }                    builder.setNegativeButton(getResources().getString(R.string.ok), null)                            .setCancelable(true);                    builder.create();                    builder.show();                }                return true;            default:                return super.onOptionsItemSelected(item);        }    }}

Viewing all articles
Browse latest Browse all 542

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>