请专注于适配器,因为我想对如何在适配器中显示数据提出建议。
user.json
{
"UserDetails":
[
{
"firstName" : "KP","lastName" : "xyz","location" : "goa","websites" : [
{
"description" : "work","URL" : "digitalocean"
},{
"description" : "tutorials","URL" : "digitalocean/community/tutorials"
}
],"socialMedia" : [
{
"description" : "twitter","link" : "twitter/digitalocean"
},{
"description" : "facebook","link" : "facebook/DigitalOceanCloudHosting"
}
]
},{
"firstName" : "NP","lastName" : "ABC","location" : "Shimla","link" : "facebook/DigitalOceanCloudHosting"
},{
"description" : "github","link" : "github/digitalocean"
}
]
}
]
}
Mainactivity.java
private void prepareMovieData() {
try {
JSONObject obj = new JSONObject(loadJSONFromAsset());
JSONArray mUserDetailsArray = obj.getJSONArray("UserDetails");
for (int i = 0; i < mUserDetailsArray.length(); i++) {
User user = new User();
JSONObject jo_inside = mUserDetailsArray.getJSONObject(i);
user.setfirst_name(jo_inside.getString("firstName"));
user.setLast_name(jo_inside.getString("lastName"));
user.setLocation(jo_inside.getString("location"));
Log.d("Details-->",jo_inside.getString("firstName"));
JSONArray mWebsitesArray = jo_inside.getJSONArray("websites");
Log.d("Details mWebsites-->",String.valueOf(jo_inside.getJSONArray("websites")));
for (int j = 0; j < mWebsitesArray.length(); j++) {
Websites websites = new Websites();
JSONObject challengeObject = mWebsitesArray.getJSONObject(j);
websites.setDescription(challengeObject.getString("description"));
websites.setURL(challengeObject.getString("URL"));
user.getWebsites().add(websites);
}
userList.add(user);
}
} catch (JSONException e) {
Log.d("Error-->",e.getMessage());
e.printStackTrace();
}
mAdapter.notifyDataSetChanged();
}
MovieAdapter.java
class MyViewHolder extends RecyclerView.ViewHolder {
public TextView title1,year1,genre1,txtDescription1,txtUrl1,txtDescription2,txtUrl2;
public MyViewHolder(View view) {
super(view);
title1 = (TextView) view.findViewById(R.id.txttitle);
genre1 = (TextView) view.findViewById(R.id.txtgenre);
year1 = (TextView) view.findViewById(R.id.txtyear);
txtDescription1 = (TextView) view.findViewById(R.id.txtDescription1);
txtUrl1 = (TextView) view.findViewById(R.id.txtUrl1);
txtDescription2 = (TextView) view.findViewById(R.id.txtDescription2);
txtUrl2 = (TextView) view.findViewById(R.id.txtUrl2);
}
}
public MoviesAdapter(List<User> moviesList) {
this.moviesList = moviesList;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent,int viewType) {
View itemView = LayoutInflater.from(parent.getcontext())
.inflate(R.layout.demo_movie_list_row,parent,false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(MyViewHolder holder,int position) {
User user = moviesList.get(position);
holder.title1.setText(user.getFirst_name());
holder.genre1.setText(user.getLast_name());
holder.year1.setText(user.getLocation());
holder.txtDescription1.setText(user.getWebsites().get(0).getDescription());
holder.txtUrl1.setText(user.getWebsites().get(0).getURL());
holder.txtDescription2.setText(user.getWebsites().get(1).getDescription());
holder.txtUrl2.setText(user.getWebsites().get(1).getURL());
}
}