2016-07-31 19 views
0

i mit einem ArraylistAndroid: Konstruktor ContactsAdapter in Klasse ContactsAdapter kann nicht auf bestimmte Typen

dies ist mein Code ein Listview aufzufüllen bin versucht, angewendet werden:

ArrayList<Contact> results = mapper.readValue(response.toString(), 
           new TypeReference<ArrayList<Contact>>() { });//results are coming OK 

         ContactsAdapter adapter = new ContactsAdapter(this, R.layout.list_view_items, results);//error is here 

und dies ist meine individuelle Adapterklasse mit ihren jeweiligen Konstruktor:

public class ContactsAdapter extends ArrayAdapter<Contact> { 

    ArrayList<Contact> contactList = new ArrayList<>(); 

    public ContactsAdapter(Context context, int textViewResourceId, ArrayList<Contact> objects) { 
     super(context, textViewResourceId, objects); 
     contactList = objects; 
    } 

    @Override 
    public int getCount() { 
     return super.getCount(); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View v = convertView; 
     LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     v = inflater.inflate(R.layout.list_view_items, null); 
     TextView contactTextView = (TextView) v.findViewById(R.id.contactTextView); 
     TextView phoneTextView = (TextView) v.findViewById(R.id.phoneTextView); 
     ImageView imageView = (ImageView) v.findViewById(R.id.smallImageView); 
     contactTextView.setText(contactList.get(position).getName()); 
     phoneTextView.setText(contactList.get(position).getPhone().toString()); 
     //imageView.setImageResource(animalList.get(position).getAnimalImage()); 
     return v; 
    } 

} 

Fehler:

Error:(58, 51) error: constructor ContactsAdapter in class ContactsAdapter cannot be applied to given types; required: Context,int,ArrayList found: >,int,ArrayList reason: actual argument > cannot be converted to Context by method invocation conversion

Meine Daten werden von einem jSON abgerufen und als ArrayList deklariert. Ich habe einige Dinge ausprobiert, wie den Konstruktor zu ändern, aber ich bekomme es nicht zum Laufen und ich stecke fest.

Vielen Dank im Voraus!

+2

Ihr 'Adapter' Konstruktoraufruf befindet sich scheinbar in einer anonymen Klasse, also bezieht sich' this' auf diese anonyme Klasse, nicht der 'Context', den Sie als erstes Argument benötigen. Wenn dieser Code in einer 'Activity' steht, muss der Name 'Activity' vorangestellt werden. z. B. "MyActivity.this". –

+1

Kumpel, du machst meinen Tag !!! Dein Kommentar sollte die beste Antwort sein! – emboole

Antwort

1

Error:(58, 51) error: constructor ContactsAdapter in class ContactsAdapter cannot be applied to given types; required: Context,int,ArrayList<Contact> found: <anonymous Listener<JSONArray>>,int,ArrayList<Contact> reason: actual argument <anonymous Listener<JSONArray>> cannot be converted to Context by method invocation conversion

Ihr Adapter Konstruktoraufruf anscheinend innerhalb einer anonymen Klasse ist, so this auf diese anonyme Klasse bezieht, nicht die Context Sie müssen als erstes Argument. Wenn sich dieser Code in einem Activity befindet, wird der Activity-Name einfach this vorangestellt; z.B. MyActivity.this.

+0

Ich könnte noch 2 Tage bleiben und ohne deine Antwort versuchen und versagen. Danke! – emboole