我创建了一个列表视图。从json响应中检索所有值,但列表中仅显示最后一个值。如何在列表视图中显示所有值。
SixFragment.movieList = new ArrayList<Movie1>();
for (int i1 = 0; i1 < jsonArray3.length(); i1++) {
try {
JSONObject jsonObject = jsonArray3.getJSONObject(i1);
review_rating = jsonObject.optString("review_rating").toString();
username_rate = jsonObject.optString("username").toString();
review_title = jsonObject.optString("review_title").toString();
review_desc = jsonObject.optString("review_desc").toString();
sleep = jsonObject.optString("Sleep").toString();
location = jsonObject.optString("Location").toString();
service = jsonObject.optString("Service").toString();
rooms = jsonObject.optString("Rooms").toString();
cleanliness = jsonObject.optString("Cleanliness").toString();
userimage1 = jsonObject.optString("user_image").toString();
Movie1 movie = new Movie1();
movie.setRate_userimage(userimage1);
movie.setreview_rating(review_rating);
movie.setusername_rate(username_rate);
movie.setreview_title(review_title);
movie.setreview_desc(review_desc);
movie.setsleep(sleep);
movie.setlocation(location);
movie.setservice(service);
movie.setraterooms(rooms);
movie.setcleanliness(cleanliness);
SixFragment.movieList.add(movie);
} catch (JSONException e) {
e.printStackTrace();
}
}
这是我的片段页面:
public class SixFragment extends Fragment{
public static String userimage;
public static String review_rating;
public static String username_rate;
public static String review_title;
public static String review_desc;
public static String sleep;
public static String location;
public static String service;
public static String rooms;
public static String cleanliness;
public static ArrayList stringArray;
public static ArrayList<Movie1> movieList= new ArrayList<Movie1>();;
ListView listView;
Reviewadapter reviewadapter;
public SixFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v= inflater.inflate(R.layout.fragment_six, container, false);
ListView list=(ListView)v.findViewById(R.id.six_listView);
return v;
}
}
此logcat错误`
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.airstar.abservetech.airstar, PID: 27390
java.lang.NullPointerException
at com.airstar.abservetech.adapter.Reviewadapter.getCount(Reviewadapter.java:160)
at android.widget.ListView.setAdapter(ListView.java:488)
at com.airstar.abservetech.airstar.SixFragment.onCreateView(SixFragment.java:75)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:742)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617)
at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570)
at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
`
查看适配器
public class Reviewadapter extends BaseAdapter {
private final List<Movie1> movieItems;
public SixFragment context;
OneFragment Fragment;
Bitmap bitmap;
public Reviewadapter(SixFragment context, List<Movie1> movieItems) {
this.context = context;
this.movieItems = movieItems;
this.Fragment=Fragment;
}
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
convertView = inflater.inflate(R.layout.fragment_sixlist,parent,false);
CircleImageView profile_image = (CircleImageView) convertView.findViewById(R.id.profile_image);
TextView rate_username = (TextView) convertView.findViewById(R.id.rate_username);
RatingBar ratingBar = (RatingBar) convertView.findViewById(R.id.ratingBar);
TextView rate_title = (TextView) convertView.findViewById(R.id.rate_title);
TextView rate_description = (TextView) convertView.findViewById(R.id.rate_description);
RatingBar ratingBar_sleep = (RatingBar) convertView.findViewById(R.id.ratingBar_sleep);
RatingBar ratingBar_location = (RatingBar) convertView.findViewById(R.id.ratingBar_location);
RatingBar ratingBar_service = (RatingBar) convertView.findViewById(R.id.ratingBar_service);
RatingBar ratingBar_clearness = (RatingBar) convertView.findViewById(R.id.ratingBar_clearness);
RatingBar ratingBar_rooms = (RatingBar) convertView.findViewById(R.id.ratingBar_rooms);
final Movie1 m = movieItems.get(position);
// Glide.with(context)
// .load(m.getRate_userimage())
// .diskCacheStrategy(DiskCacheStrategy.ALL)
// .into(profile_image);
URL url = null;
String image=m.getRate_userimage();
try {
url = new URL(image);
InputStream is = null;
// Bitmap bitMap = BitmapFactory.decodeStream(is);
//create imageview dynamically
Glide.with(context).load(String.valueOf(url)).into(profile_image);
} catch (MalformedURLException e) {
e.printStackTrace();
}
//Glide.with(context).load(String.valueOf(url)).into(profile_image);
if (m.getusername_rate()!=null)
{
if (!m.getusername_rate().equals("null"))
{
rate_username.setText(m.getusername_rate());
}}
if (m.getreview_rating()!=null)
{
if (!m.getreview_rating().equals("null"))
{
ratingBar.setRating(Float.parseFloat(m.getreview_rating()));
}}
if (m.getsleep()!=null)
{
if (!m.getsleep().equals("null"))
{
ratingBar_sleep.setRating(Float.parseFloat(m.getsleep()));
}}
}
return convertView;
}
@Override
public int getCount() {
return movieItems.size();
}
@Override
public Object getItem(int location) {
return movieItems.get(location);
}
@Override
public long getItemId(int position) {
return position;
}
}
最佳答案
在您的片段中,使列表静态:
public class SixFragment extends Fragment{
// Your code
//------------DO THIS------------------///
public static List<Movie1> movieList = new ArrayList<Movie1>();
public SixFragment() {
// Required empty public constructor
}
//Your code
}
片段中的其余代码将保持不变。
像这样更改您的JSON循环:
SixFragment.movieList = new ArrayList<Movie1>();
for (int i1 = 0; i1 < jsonArray3.length(); i1++) {
try {
JSONObject jsonObject = jsonArray3.getJSONObject(i1);
review_rating = jsonObject.optString("review_rating").toString();
username_rate = jsonObject.optString("username").toString();
review_title = jsonObject.optString("review_title").toString();
review_desc = jsonObject.optString("review_desc").toString();
sleep = jsonObject.optString("Sleep").toString();
location = jsonObject.optString("Location").toString();
service = jsonObject.optString("Service").toString();
rooms = jsonObject.optString("Rooms").toString();
cleanliness = jsonObject.optString("Cleanliness").toString();
userimage1 = jsonObject.optString("user_image").toString();
Movie1 movie = new Movie1();
movie.setRate_userimage(userimage1);
movie.setreview_rating(review_rating);
movie.setusername_rate(username_rate);
movie.setreview_title(review_title);
movie.setreview_desc(review_desc);
movie.setsleep(sleep);
movie.setlocation(location);
movie.setservice(service);
movie.setraterooms(rooms);
movie.setcleanliness(cleanliness);
SixFragment.movieList.add(movie);
} catch (JSONException e) {
e.printStackTrace();
}
}