public class MainActivity extends AppCompatActivity {
ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv=(ListView)findViewById(R.id.list_id);
new JsonTask().execute("https://www.dropbox.com/s/o8yqrfm08wfdh48/Hotels.txt?dl=0");
}
class JsonTask extends AsyncTask<String,String ,List<MovieModels>>{
@Override
protected List<MovieModels> doInBackground(String...Params) {
HttpURLConnection connection = null;
BufferedReader reader = null;
try {
URL url = new URL(Params[0]);
connection = (HttpURLConnection) url.openConnection();
connection.connect();
InputStream stream= connection.getInputStream();
reader=new BufferedReader(new InputStreamReader(stream));
StringBuffer buffer =new StringBuffer();
String line="";
while ((line=reader.readLine())!=null){
buffer.append(line);
}
String finaljson = buffer.toString();
JSONObject parentObject = new JSONObject(finaljson);
JSONArray parentArray =parentObject.getJSONArray("Hotels");
List<MovieModels> modelsList=new ArrayList<>();
for (int i=0; i<parentArray.length();i++) {
JSONObject finalobject = parentArray.getJSONObject(i);
MovieModels models= new MovieModels();
models.setImage(finalobject.getString("Image"));
models.setHotel_Name(finalobject.getString("Hotel_Name"));
modelsList.add(models);
}
return modelsList;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(List<MovieModels> result) {
super.onPostExecute(result);
Adapter adapter=new Adapter(getApplicationContext(),R.layout.row,result);
lv.setAdapter(adapter);
//to do set the data into list
}
}
public class Adapter extends ArrayAdapter{
private List<MovieModels> modelsList;
private int resource;
private LayoutInflater inflater;
public Adapter(Context context, int resource, List<MovieModels> objects) {
super(context, resource, objects);
modelsList= objects;
this.resource=resource;
inflater=(LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView==null){
convertView=inflater.inflate(R.layout.row,null);
}
ImageView imageView;
TextView textView;
imageView=(ImageView)convertView.findViewById(R.id.image_id);
textView=(TextView)convertView.findViewById(R.id.text_id);
ImageLoader.getInstance().displayImage(modelsList.get(position).getImage(),imageView);
textView.setText("Hotel_Name-"+modelsList.get(position).getHotel_Name());
return convertView;
}
}}
Ich habe einen Fehler in der Menge Adapterklasse, könnte jemand raten?java.lang.NullPointerException: Versuch Schnittstelle Methode aufzurufen ‚int java.util.List.size()
Was ist Ihre Frage? – Carcigenicate
poste bitte deinen MovieModels.java code bitte –
übrigens die ersten 3 artikel im json array sind Hotelname und nicht Hotel_Name fehlt das _ also repariere es wenn du alle ergebnisse bekommen willst –