使用bufferedreader和delimiter读取多个链接

时间:2013-11-26 21:43:31

标签: java android bufferedreader delimiter

我正在尝试从文本文件加载多个url rss链接。到目前为止它只能从文件中加载一个链接。我尝试使用分隔符但它似乎不起作用。任何帮助表示赞赏。

代码

    StringBuilder rsslink = new StringBuilder();
    InputStream is = getResources().openRawResource(R.raw.xmlsource);
    BufferedReader br = new BufferedReader(new InputStreamReader(is));
    String line = null;

    try {
        while ((line = br.readLine()) != null) 
        {
           rsslink.append(line) ;
        }
        String [] arr = rsslink.toString().split(";"); 
        for (int i = 0; i < arr.length; i++)
            {
            }
    } 
    catch (IOException e) 
    {
        e.printStackTrace();
    }
    String RSS_LINK = rsslink.toString();

    Log.d(Constants.TAG, "Service started");
    List<RssItem> rssItems = null;
    try 
    {
        XMLRssParser parser = new XMLRssParser();
        rssItems = parser.parse(getInputStream(RSS_LINK));
} 
    catch (XmlPullParserException e) 
    {
        Log.w(e.getMessage(), e);
    } 
    catch (IOException e) 
    {
        Log.w(e.getMessage(), e);
    }
    Bundle bundle = new Bundle();
    bundle.putSerializable(ITEMS, (Serializable) rssItems);
    ResultReceiver receiver = intent.getParcelableExtra(RECEIVER);
    receiver.send(0, bundle);
}

public InputStream getInputStream(String link) 
{
    try 
    {
        URL url = new URL(link);
        return url.openConnection().getInputStream();
    } catch (IOException e) 
    {
        Log.w(Constants.TAG, "Exception while retrieving the input stream", e);
        return null;
    }
}
}

这就是 “;” 作为分隔符的文本文件

http://www.engadget.com/rss.xml; http://www.pcworld.com/index.rss; http://feeds.feedburner.com/SpoonForkBacon?format=xml; 

RssFragment

public class RssFragment extends Fragment implements OnItemClickListener 
{

private ProgressBar progressBar;
private ListView listView;
private View view;

@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setRetainInstance(true);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
{
    if (view == null) 
    {
        view = inflater.inflate(R.layout.fragment_layout, container, false);
        progressBar = (ProgressBar) view.findViewById(R.id.progressBar);
        listView = (ListView) view.findViewById(R.id.listView);
        listView.setOnItemClickListener(this);
        startService();
    } 
    else 
    {
        ViewGroup parent = (ViewGroup) view.getParent();
        parent.removeView(view);
    }
    return view;
}

private void startService() 
{
    Intent intent = new Intent(getActivity(), RssService.class);
    intent.putExtra(RssService.RECEIVER, resultReceiver);
    getActivity().startService(intent);
}

private final ResultReceiver resultReceiver = new ResultReceiver(new Handler()) 
{
    @SuppressWarnings("unchecked")
    @Override
    protected void onReceiveResult(int resultCode, Bundle resultData) 
    {
        progressBar.setVisibility(View.GONE);
        List<RssItem> items = (List<RssItem>) resultData.getSerializable(RssService.ITEMS);
        if (items != null) 
        {
            RssAdapter adapter = new RssAdapter(getActivity(), items);
            listView.setAdapter(adapter);
        } 
        else 
        {
            Toast.makeText(getActivity(), "An error occured while downloading the rss feed.",
                    Toast.LENGTH_LONG).show();
        }
    };
};

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
{
    RssAdapter adapter = (RssAdapter) parent.getAdapter();
    RssItem item = (RssItem) adapter.getItem(position);
    Uri uri = Uri.parse(item.getLink());
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    startActivity(intent);
}
}

0 个答案:

没有答案