0

I use Xmlpullparser to parse xml from Asset folder
this is code

public class FragmentImg extends Fragment {
static final String KEY_EMP = "emp";
static final String KEY_NAME = "name";
static final String KEY_GENDER = "gender";
static final String KEY_AGE = "age";
List<HashMap<String,String>> imgHashmap;
List<ClassImg> imgList = null;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_img, container, false);
    ImgActivity activity = (ImgActivity) getActivity();
    String uri = "list_img.xml";
    GridView gv_img = (GridView)view.findViewById(R.id.gridViewImg);
    try {
        XmlPullParserImg parser_Img = new XmlPullParserImg();
        imgList = parser_Img.parse(getActivity().getAssets().open(uri));
        BinderDataImg bd_img = new BinderDataImg(getActivity(), imgHashmap);
        gv_img.setAdapter(bd_img);
        gv_img.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                Intent i = new Intent();
                i.setClass(getActivity(), ImgDetail.class);
                startActivity(i);
            }
        });
    } catch (IOException e) {
        e.printStackTrace();
    }
    return view;
}
public class XmlPullParserImg {
    private ClassImg c_i;
    private String text;
    public XmlPullParserImg() {
        danhsachList = new ArrayList<ClassImg>();        }
    public List<ClassImg> parse(InputStream is) {
        XmlPullParserFactory factory = null;
        XmlPullParser parser = null;
        try {
            imgHashmap = new ArrayList<HashMap<String,String>>();
            HashMap<String,String> map = null;
            factory = XmlPullParserFactory.newInstance();
            factory.setNamespaceAware(true);
            parser = factory.newPullParser();
            parser.setInput(is, null);
            int eventType = parser.getEventType();
            while (eventType != XmlPullParser.END_DOCUMENT) {
                String tagname = parser.getName();
                switch (eventType) {
                    case XmlPullParser.START_TAG:
                        if (tagname.equalsIgnoreCase("KEY_EMP")) {
                            c_i = new ClassImg();
                            map = new HashMap<String,String>();
                        }
                        break;
                    case XmlPullParser.TEXT:
                        text = parser.getText();
                        break;
                    case XmlPullParser.END_TAG:
                        if (tagname.equalsIgnoreCase("KEY_EMP")) {
                            imgList.add(c_ds);
                            imgHashmap.add(map);
                        } else if (tagname.equalsIgnoreCase(KEY_NAME)) {
                            c_i.setName(text);
                            map.put(KEY_NAME, text);
                        } else if (tagname.equalsIgnoreCase(KEY_GENDER)) {
                            c_i.setGender(text);
                            map.put(KEY_GENDER, text);
                        } else if (tagname.equalsIgnoreCase(KEY_AGE)) {
                            c_i.setAge(text);
                            map.put(KEY_AGE, text);
                        break;
                    default:
                        break;
                }
                eventType = parser.next();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return imgList;
    }
}

}

Everything is ok, and after that, i upload xml to dropbox.
this is url https://www.dropbox.com/s/lh2ucpbvpqloa3e/list_img.xml
how to parse it with my code?
thank you for reading.

abcd1234
  • 219
  • 4
  • 16

1 Answers1

0

Try like this

URL url=new URL("https://www.dropbox.com/s/lh2ucpbvpqloa3e/list_img.xml");
HttpURLConnection http=(HttpURLConnection)url.openConnection();
http.setDoInput(true);
http.connect();
InputStream is=http.getInputStream();

After that you can assign inputstream to setData() function

  parser.setInput(is, null);

And rest of the code you already written

MorZa
  • 2,215
  • 18
  • 33
akhil Rao
  • 1,169
  • 7
  • 17
  • error in HttpUrlConnection , import something else? – abcd1234 May 26 '16 at 11:33
  • you have to add import java.net.HttpURLConnection; – akhil Rao May 26 '16 at 11:45
  • I get error java.lang.RuntimeException: Unable to start activity ComponentInfo android.os.NetworkOnMainThreadException – abcd1234 May 27 '16 at 02:06
  • You cant directly do networking operation in activity(main UI thread).For that you have to define seperate java class that extends AsyncTask and override doInBackground() method,inside that do networking operation or second prefered way of doing networking is by using volley networking library – akhil Rao May 27 '16 at 02:25