我有一个名为Bookmark的xml文件,它位于xml文件夹中.
我想将xml解析为recycleler视图,我可以在recycleler视图中显示Bookmark的列表.
书签xml它不在资产中,而是在res,然后是xml文件夹.
这是我的代码.
xml文件夹中的Bookmark.xml
<Bookmarks>
<Bookmark id="1" icon="google.png" name="Google" searchUrl="https://www.google.com" hidden="true" />
<Bookmark id="2" icon="youtube_new.png" name="Youtube" searchUrl="http://m.youtube.com" />
<Bookmark id="3" icon="facebook.png" name="Facebook" nativeUrl="facebook://" searchUrl="https://m.facebook.com" />
<Bookmark id="4" icon="twitter.png" name="Twitter" searchUrl="https://mobile.twitte.com" />
<Bookmark id="5" icon="instagram.png" name="Instagram" nativeUrl="instagram://" searchUrl="https:instagram.com" />
<Bookmark id="6" icon="gmail.png" name="Gmail" nativeUrl="googlemail://" searchUrl="https://gmail.com" />
<Bookmark id="7" icon="google_translate.png" name="Translate" searchUrl="https://" />
</Bookmarks>
这是recycleler视图的java类
public class FragmentBookmark extends Fragment {
ArrayList<Bookmark> arrayList = new ArrayList<>();
XmlPullParserFactory pullParserFactory;
RecyclerView myRecyclerView;
MyAdapter myAdapter;
public void onCreateView(@Nullable Bundle savedInstanceState) {
myRecyclerView = getActivity().findViewById(R.id.myRecyclerView);
RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getActivity(), 1);
myRecyclerView.setHasFixedSize(true);
try {
pullParserFactory = XmlPullParserFactory.newInstance();
XmlPullParser parser = pullParserFactory.newPullParser();
InputStream in_s = getActivity().getApplicationContext().getAssets().open("bookmarks.xml");
parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
parser.setInput(in_s, null);
parseXML(parser);
} catch (XmlPullParserException e) {
e.printstacktrace();
} catch (IOException e) {
e.printstacktrace();
}
for (int i = 0; i < arrayList.size(); i++) {
Log.e("OUTPUT", arrayList.get(i).toString());
}
myAdapter = new MyAdapter(getActivity(), arrayList);
myRecyclerView.setAdapter(myAdapter);
}
private void parseXML(XmlPullParser parser) throws XmlPullParserException, IOException {
ArrayList<Bookmark> countries = null;
int eventType = parser.getEventType();
Bookmark country = null;
while (eventType != XmlPullParser.END_DOCUMENT) {
String name;
name = parser.getName();
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
countries = new ArrayList();
break;
case XmlPullParser.START_TAG:
break;
case XmlPullParser.END_TAG:
if (name.equals("Bookmark")) {
Bookmark bookmark = new Bookmark();
bookmark.setName(parser.getAttributeValue(null, "name"));
bookmark.setIcon(parser.getAttributeValue(null, "icon"));
bookmark.setId(parser.getAttributeValue(null, "id"));
bookmark.setSearchUrl(parser.getAttributeValue(null, "searchUrl"));
bookmark.setNativeUrl(parser.getAttributeValue(null, "nativeUrl"));
arrayList.add(bookmark);
}
break;
}
eventType = parser.next();
}
}
private void processparsing(XmlPullParser parser) throws IOException, XmlPullParserException {
int eventType = parser.getEventType();
Bookmark bookmark = null;
}
}
这是回收站视图xml
<android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/listRecyclerView"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:fillViewport="false">
</android.support.v7.widget.RecyclerView>
这是recyclerview的适配器
public class MyAdapter extends RecyclerView.Adapter {
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.grid_item, viewGroup, false);
return new ListViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
((ListViewHolder) viewHolder).bindView(i);
}
@Override
public int getItemCount() {
return OurData.title.length;
}
private class ListViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private TextView mItemText;
private ImageView mItemImage;
public ListViewHolder(View itemView) {
super(itemView);
mItemText = itemView.findViewById(R.id.textView);
mItemImage = itemView.findViewById(R.id.image_view);
itemView.setonClickListener(this);
}
public void bindView(int position) {
mItemText.setText(OurData.title[position]);
mItemImage.setimageResource(OurData.picture[position]);
}
@Override
public void onClick(View v) {
}
}
}
这是一个java类,我手动添加并在Recycler视图中工作,但我需要Bookmark xml在recycleler视图中显示
public class OurData {
public static String[] title = new String[] {
"Bing",
"Facebook",
"Gmail",
"Translate",
"Bing",
"Facebook",
"Gmail",
"Translate"
};
public static int[] picture = new int[] {
R.drawable.instagram,
R.drawable.instagram,
R.drawable.instagram,
R.drawable.instagram,
R.drawable.instagram,
R.drawable.instagram,
R.drawable.instagram,
R.drawable.instagram
};
}
这是显示图像的xml和用于回收器视图的TextView
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="70dp"
android:id="@+id/recyclerView">
<ImageView
android:id="@+id/image_view"
android:layout_width="28dp"
android:layout_height="27dp"
android:layout_alignParentTop="true"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.129"
app:layout_constraintStart_toStartOf="parent"
tools:ignore="MissingConstraints"
tools:layout_editor_absoluteY="16dp" />
<TextView
android:id="@+id/textView"
android:layout_width="80dp"
android:layout_height="23dp"
android:layout_below="@+id/image_view"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:gravity="center"
android:text="TextView"
app:layout_constraintHorizontal_bias="0.069"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/image_view" />
</android.support.constraint.ConstraintLayout>
解决方法:
更新2
FragmentBookmark
public class FragmentBookmark extends Fragment {
public FragmentBookmark() {
// required empty public constructor
}
private Context mContext;
ArrayList<Bookmark> arrayList = new ArrayList<>();
XmlPullParserFactory pullParserFactory;
RecyclerView myRecyclerView;
DataAdapter dataAdapter;
@Override
public void onAttach(Context context) {
super.onAttach(context);
mContext = context;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_bookmark, container, false);
myRecyclerView = rootView.findViewById(R.id.myRecyclerView);
myRecyclerView.setLayoutManager(new linearlayoutmanager(mContext));
myRecyclerView.setHasFixedSize(true);
dataAdapter = new DataAdapter(mContext, arrayList);
myRecyclerView.setAdapter(dataAdapter);
try {
XmlPullParser xpp = getResources().getXml(R.xml.bookmarks);
while (xpp.getEventType() != XmlPullParser.END_DOCUMENT) {
if (xpp.getEventType() == XmlPullParser.START_TAG) {
if (xpp.getName().equals("Bookmark")) {
Log.e("MY_VALUE", " * " + xpp.getAttributeValue(0) + " * ");
Log.e("MY_VALUE", " * " + xpp.getAttributeValue(1) + " * ");
Log.e("MY_VALUE", " * " + xpp.getAttributeValue(5) + " * ");
Log.e("MY_VALUE", " * " + xpp.getAttributeValue(2) + " * ");
Log.e("MY_VALUE", " * " + xpp.getAttributeValue(3) + " * ");
Log.e("MY_VALUE", " * " + xpp.getAttributeValue(4) + " * ");
Bookmark bookmark = new Bookmark();
bookmark.setName(xpp.getAttributeValue(0));
int drawableResourceId = this.getResources().getIdentifier(xpp.getAttributeValue(1), "drawable", mContext.getPackageName());
bookmark.setIcon(drawableResourceId);
bookmark.setId(xpp.getAttributeValue(2));
bookmark.setSearchUrl(xpp.getAttributeValue(3));
bookmark.setNativeUrl(xpp.getAttributeValue(4));
arrayList.add(bookmark);
}
}
xpp.next();
}
} catch (XmlPullParserException e) {
e.printstacktrace();
} catch (IOException e) {
e.printstacktrace();
}
dataAdapter.notifyDataSetChanged();
return rootView;
}
}
layout.fragment_bookmark
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/myRecyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</RelativeLayout>
DataAdapter
public class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder> {
private Context context;
ArrayList<Bookmark> arrayList = new ArrayList<>();
public DataAdapter(Context context, ArrayList<Bookmark> arrayList) {
this.context = context;
this.arrayList = arrayList;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) {
View view=LayoutInflater.from(context).inflate(R.layout.custom_layout,parent,false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.tvName.setText(arrayList.get(position).getName());
holder.tvIcon.setimageResource(arrayList.get(position).getIcon());
holder.tvId.setText(arrayList.get(position).getId());
holder.tvSearchUrl.setText(arrayList.get(position).getSearchUrl());
holder.tvNativeUrl.setText(arrayList.get(position).getNativeUrl());
}
@Override
public int getItemCount() {
return arrayList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView tvName,tvId,tvSearchUrl,tvNativeUrl;
ImageView tvIcon;
public ViewHolder(@NonNull View itemView) {
super(itemView);
tvName=itemView.findViewById(R.id.tvName);
tvIcon=itemView.findViewById(R.id.tvIcon);
tvId=itemView.findViewById(R.id.tvId);
tvSearchUrl=itemView.findViewById(R.id.tvSearchUrl);
tvNativeUrl=itemView.findViewById(R.id.tvNativeUrl);
}
}
}
layout.custom_layout
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:cardCornerRadius="15dp"
app:cardElevation="5dp"
app:cardUseCompatPadding="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="Name : " />
<TextView
android:id="@+id/tvName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="Icon : " />
<ImageView
android:id="@+id/tvIcon"
android:layout_width="20dp"
android:layout_height="20dp"
android:padding="10dp"
android:text="" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="Id : " />
<TextView
android:id="@+id/tvId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="SearchUrl : " />
<TextView
android:id="@+id/tvSearchUrl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="NativeUrl : " />
<TextView
android:id="@+id/tvNativeUrl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="" />
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
Bookmark model class
public class Bookmark
{
String name,id,nativeUrl,searchUrl;
int icon;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public int getIcon() {
return icon;
}
public void setIcon(int icon) {
this.icon = icon;
}
public String getNativeUrl() {
return nativeUrl;
}
public void setNativeUrl(String nativeUrl) {
this.nativeUrl = nativeUrl;
}
public String getSearchUrl() {
return searchUrl;
}
public void setSearchUrl(String searchUrl) {
this.searchUrl = searchUrl;
}
@Override
public String toString() {
return "Bookmark{" +
"name='" + name + '\'' +
", icon='" + icon + '\'' +
", id='" + id + '\'' +
", nativeUrl='" + nativeUrl + '\'' +
", searchUrl='" + searchUrl + '\'' +
'}';
}
}
UPDATE
XML文件
<Bookmarks>
<Bookmark
name="Google"
hidden="true"
icon="google.png"
id="1"
nativeUrl=""
searchUrl="https://www.google.com" />
<Bookmark
name="Youtube"
hidden=""
icon="youtube_new.png"
id="2"
nativeUrl=""
searchUrl="http://m.youtube.com" />
<Bookmark
name="Facebook"
hidden=""
icon="facebook.png"
id="3"
nativeUrl="facebook://"
searchUrl="https://m.facebook.com" />
<Bookmark
name="Twitter"
hidden=""
icon="twitter.png"
id="4"
nativeUrl=""
searchUrl="https://mobile.twitte.com" />
<Bookmark
name="Instagram"
hidden=""
icon="instagram.png"
id="5"
nativeUrl="instagram://"
searchUrl="https:instagram.com" />
<Bookmark
name="Gmail"
hidden=""
icon="gmail.png"
id="6"
nativeUrl="googlemail://"
searchUrl="https://gmail.com" />
<Bookmark
name="Translate"
hidden=""
icon="google_translate.png"
id="7"
nativeUrl=""
searchUrl="https://" />
</Bookmarks>
try {
XmlPullParser xpp = getResources().getXml(R.xml.bookmarks);
while (xpp.getEventType() != XmlPullParser.END_DOCUMENT) {
if (xpp.getEventType() == XmlPullParser.START_TAG) {
if (xpp.getName().equals("Bookmark")) {
Log.e("MY_VALUE", " * " + xpp.getAttributeValue(0) + " * ");
Log.e("MY_VALUE", " * " + xpp.getAttributeValue(1) + " * ");
Log.e("MY_VALUE", " * " + xpp.getAttributeValue(5) + " * ");
Log.e("MY_VALUE", " * " + xpp.getAttributeValue(2) + " * ");
Log.e("MY_VALUE", " * " + xpp.getAttributeValue(3) + " * ");
Log.e("MY_VALUE", " * " + xpp.getAttributeValue(4) + " * ");
Bookmark bookmark = new Bookmark();
bookmark.setName(xpp.getAttributeValue(0));
bookmark.setIcon(xpp.getAttributeValue(1));
bookmark.setId(xpp.getAttributeValue(2));
bookmark.setSearchUrl(xpp.getAttributeValue(3));
bookmark.setNativeUrl(xpp.getAttributeValue(4));
arrayList.add(bookmark);
}
}
xpp.next();
}
} catch (XmlPullParserException e) {
e.printstacktrace();
} catch (IOException e) {
e.printstacktrace();
}
我们可以使用三种类型的android XML解析器.
> SAX解析器
> DOM解析器
> XMLPullParser
您可以使用XmlPullParserFactory
来解析xml
试试这里是工作代码
MainActivity
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.linearlayoutmanager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
ArrayList<Bookmark> arrayList = new ArrayList<>();
XmlPullParserFactory pullParserFactory;
RecyclerView myRecyclerView;
DataAdapter dataAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myRecyclerView = findViewById(R.id.myRecyclerView);
myRecyclerView.setLayoutManager(new linearlayoutmanager(this));
myRecyclerView.setHasFixedSize(true);
try {
pullParserFactory = XmlPullParserFactory.newInstance();
XmlPullParser parser = pullParserFactory.newPullParser();
InputStream in_s = getApplicationContext().getAssets().open("bookmark.xml");
parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
parser.setInput(in_s, null);
parseXML(parser);
} catch (XmlPullParserException e) {
e.printstacktrace();
} catch (IOException e) {
e.printstacktrace();
}
for (int i = 0; i < arrayList.size(); i++) {
Log.e("OUTPUT", arrayList.get(i).toString());
}
dataAdapter = new DataAdapter(this, arrayList);
myRecyclerView.setAdapter(dataAdapter);
}
private void parseXML(XmlPullParser parser) throws XmlPullParserException, IOException {
ArrayList<Bookmark> countries = null;
int eventType = parser.getEventType();
Bookmark country = null;
while (eventType != XmlPullParser.END_DOCUMENT) {
String name;
name = parser.getName();
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
countries = new ArrayList();
break;
case XmlPullParser.START_TAG:
break;
case XmlPullParser.END_TAG:
if (name.equals("Bookmark")) {
Log.e("VALUE", parser.getAttributeValue(null, "name") + "");
Log.e("VALUE", parser.getAttributeValue(null, "icon") + "");
Log.e("VALUE", parser.getAttributeValue(null, "id") + "");
Log.e("VALUE", parser.getAttributeValue(null, "searchUrl") + "");
Log.e("VALUE", parser.getAttributeValue(null, "nativeUrl") + "");
Bookmark bookmark = new Bookmark();
bookmark.setName(parser.getAttributeValue(null, "name"));
bookmark.setIcon(parser.getAttributeValue(null, "icon"));
bookmark.setId(parser.getAttributeValue(null, "id"));
bookmark.setSearchUrl(parser.getAttributeValue(null, "searchUrl"));
bookmark.setNativeUrl(parser.getAttributeValue(null, "nativeUrl"));
arrayList.add(bookmark);
}
break;
}
eventType = parser.next();
}
}
private void processparsing(XmlPullParser parser) throws IOException, XmlPullParserException {
int eventType = parser.getEventType();
Bookmark bookmark = null;
}
}
layout.activity_main
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/myRecyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</RelativeLayout>
DataAdapter
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.ArrayList;
public class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder> {
private Context context;
ArrayList<Bookmark> arrayList = new ArrayList<>();
public DataAdapter(Context context, ArrayList<Bookmark> arrayList) {
this.context = context;
this.arrayList = arrayList;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) {
View view=LayoutInflater.from(context).inflate(R.layout.custom_layout,parent,false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.tvName.setText(arrayList.get(position).getName());
holder.tvIcon.setText(arrayList.get(position).getIcon());
holder.tvId.setText(arrayList.get(position).getId());
holder.tvSearchUrl.setText(arrayList.get(position).getSearchUrl());
holder.tvNativeUrl.setText(arrayList.get(position).getNativeUrl());
}
@Override
public int getItemCount() {
return arrayList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView tvName,tvIcon,tvId,tvSearchUrl,tvNativeUrl;
public ViewHolder(@NonNull View itemView) {
super(itemView);
tvName=itemView.findViewById(R.id.tvName);
tvIcon=itemView.findViewById(R.id.tvIcon);
tvId=itemView.findViewById(R.id.tvId);
tvSearchUrl=itemView.findViewById(R.id.tvSearchUrl);
tvNativeUrl=itemView.findViewById(R.id.tvNativeUrl);
}
}
}
layout.custom_layout
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:cardCornerRadius="15dp"
app:cardElevation="5dp"
app:cardUseCompatPadding="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="Name : " />
<TextView
android:id="@+id/tvName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="Icon : " />
<TextView
android:id="@+id/tvIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="Id : " />
<TextView
android:id="@+id/tvId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="SearchUrl : " />
<TextView
android:id="@+id/tvSearchUrl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="NativeUrl : " />
<TextView
android:id="@+id/tvNativeUrl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="" />
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
Bookmark model class
public class Bookmark
{
String name,icon,id,nativeUrl,searchUrl;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getNativeUrl() {
return nativeUrl;
}
public void setNativeUrl(String nativeUrl) {
this.nativeUrl = nativeUrl;
}
public String getSearchUrl() {
return searchUrl;
}
public void setSearchUrl(String searchUrl) {
this.searchUrl = searchUrl;
}
@Override
public String toString() {
return "Bookmark{" +
"name='" + name + '\'' +
", icon='" + icon + '\'' +
", id='" + id + '\'' +
", nativeUrl='" + nativeUrl + '\'' +
", searchUrl='" + searchUrl + '\'' +
'}';
}
}
欲了解更多信息,请查看以下帖子
> Android – XML Parser
> Android XML Parser – XMLPullParser
> How to read XML File in Java (DOM Parser)
> Java SAX Parser Example
> Parsing XML data in Android Apps
> Android XML Parsing using DOM Parser
> Android XML Parsing Tutorial
> Learning to Parse XML Data in Your Android App
OUTPUT