2013-12-19 3 views
0

코드에서 사용자 지정 어댑터를 가져 오려고합니다. 나는 튜토리얼을 따라 갔지만 뭔가 잘못된 것이있다. 사용자 지정 어댑터에서 생성자가 정의되지 않았습니다.

내 CustomListAdapter 클래스입니다 :

package com.jd.wedstrijdkaart; 

import java.util.ArrayList; 

import android.app.Activity; 
import android.content.Context; 
import android.content.res.Resources; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.TextView; 

public class CustomListAdapter extends BaseAdapter { 

      /*********** Declare Used Variables *********/ 
      private Activity activity; 
      private ArrayList data; 
      private static LayoutInflater inflater=null; 
      public Resources res; 
      Players tempValues=null; 
      int i=0; 

      /************* CustomAdapter Constructor 
      * @return *****************/ 
      public void CustomAdapter(Activity a, ArrayList d,Resources resLocal) { 

        /********** Take passed values **********/ 
        activity = a; 
        data=d; 
        res = resLocal; 

        /*********** Layout inflator to call external xml layout() ***********/ 
         inflater = (LayoutInflater)activity. 
                getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

      } 

      /******** What is the size of Passed Arraylist Size ************/ 
      public int getCount() { 

       if(data.size()<=0) 
        return 1; 
       return data.size(); 
      } 

      public Object getItem(int position) { 
       return position; 
      } 

      public long getItemId(int position) { 
       return position; 
      } 

      /********* Create a holder Class to contain inflated xml file elements *********/ 
      public static class ViewHolder{ 

       public TextView shirt; 
       public TextView name; 

      } 

      /****** Depends upon data size called for each row , Create each ListView row *****/ 
      public View getView(int position, View convertView, ViewGroup parent) { 

       View vi = convertView; 
       ViewHolder holder; 

       if(convertView==null){ 

        /****** Inflate tabitem.xml file for each row (Defined below) *******/ 
        vi = inflater.inflate(R.layout.adapter_players, null); 

        /****** View Holder Object to contain tabitem.xml file elements ******/ 

        holder = new ViewHolder(); 
        holder.shirt = (TextView) vi.findViewById(R.id.shirt); 
        holder.name=(TextView)vi.findViewById(R.id.name); 

        /************ Set holder with LayoutInflater ************/ 
        vi.setTag(holder); 
       } 
       else 
        holder=(ViewHolder)vi.getTag(); 

       if(data.size()<=0) 
       { 
        holder.name.setText("No Data"); 

       } 
       else 
       { 
        /***** Get each Model object from Arraylist ********/ 
        tempValues = null; 
        tempValues = (Players) data.get(position); 

        /************ Set Model values in Holder elements ***********/ 

         holder.shirt.setText(tempValues.getShirt()); 
         holder.name.setText(tempValues.getSpeler()); 


         /******** Set Item Click Listner for LayoutInflater for each row *******/ 


       } 
       return vi; 
      }     

     } 

내 플레이어 클래스 :

package com.jd.wedstrijdkaart; 

import android.util.Log; 

public class Players 


    { 
    private int shirtNummer; 
     private String spelerNaam; 
     private int spelerTeam; 
     private int wedstrijdSpeler; 
     private int idSpeler; 


     public Players(){} 

     public Players(int shirtNummer, String spelerNaam, int spelerTeam, int wedstrijdSpeler) { 
      super(); 
      this.shirtNummer = shirtNummer; 
      this.spelerNaam = spelerNaam; 
      this.spelerTeam = spelerTeam; 
      this.wedstrijdSpeler = wedstrijdSpeler; 
     } 
     //getters & setters 

     public int getIdSpeler() { 
     return idSpeler; 
} 
public void setIdSpeler(int idSpeler) { 
     this.idSpeler = idSpeler; 
} 
     public int getShirt() { 
      return shirtNummer; 
     } 
     public void setShirt(int shirtNummer) { 
      this.shirtNummer = shirtNummer; 
     } 
     public String getSpeler() { 
      return spelerNaam; 
     } 
     public void setSpeler(String spelerNaam) { 
      this.spelerNaam = spelerNaam; 
     } 
     public int getTeam() { 
      return spelerTeam; 
     } 
     public void setTeam(int spelerTeam) { 
      this.spelerTeam = spelerTeam; 
     } 
     public int getSpelerWedstrijd() { 
      return wedstrijdSpeler; 
     } 
     public void setSpelerWedstrijd(int wedstrijdSpeler) { 
      this.wedstrijdSpeler = wedstrijdSpeler; 
     } 

    //strings 
     @Override 
      public String toString() { 
      Log.d("Speler "+spelerNaam,"Team=" + spelerTeam + ", Shirt=" + shirtNummer+", wedstrijd=" + wedstrijdSpeler); 
      return "[id=" + idSpeler + ", shirt="+shirtNummer+", naam=" + spelerNaam + ", team=" + spelerTeam+ ", wedstrijd=" + wedstrijdSpeler 
        + "]"; 
     } 
} 

내 mainActivity에서 나는이 작업을 수행 :

ListView list; 
    CustomListAdapter adapter; 
    public MainActivity CustomListView = null; 
    public ArrayList<Players> CustomListViewValuesArr = new ArrayList<Players>(); 
    //button handlers newmatch_players_home 
    public void addSpelerNu(View button) { 

     Log.d("WedstrijdID buiten de create", ""+wedstrijdId); 
     Log.d("id return team thuis", ""+thuisTeamId); 
     //thuisteam 
     final EditText shirtNummer = (EditText) findViewById(R.id.shirtThuis); 
     String nummerShirt = shirtNummer.getText().toString(); 
     int shirtSpeler = Integer.parseInt(nummerShirt); 
     final EditText spelerNaam = (EditText) findViewById(R.id.naamThuis); 
     String naamSpeler = spelerNaam.getText().toString(); 

     Integer wedstrijdSpelerId = (int) (long) wedstrijdId; 
     SqLiteHelper db = new SqLiteHelper(this); 
     db.addSpeler(new Players(shirtSpeler, naamSpeler, thuisTeamId, wedstrijdSpelerId)); 
     Log.d("Toevoegen speler THUIS", ">> BEGIN"); 
     Log.d("Toevoegen speler", "Shirt = "+nummerShirt+" Naam = "+naamSpeler +" Team ="+thuisTeamId+" Wedstrijd ="+wedstrijdSpelerId); 
     Log.d("Toevoegen speler", ">> EIND"); 

     shirtNummer.setText(null); 
     spelerNaam.setText(null); 


     CustomListView = this; 

     /******** Take some data in Arraylist (CustomListViewValuesArr) ***********/ 

     List <Players> CustomListViewValuesArr = new ArrayList<Players>();  

     Resources res =getResources(); 
     list= (ListView)findViewById(R.id.listHome); 

     /**************** Create Custom Adapter *********/ 
     adapter=new CustomListAdapter(CustomListView, CustomListViewValuesArr,res); 
     list.setAdapter(adapter); 

    } 

하지만 이클립스 나는이를보고 계속 알림 :

생성자 CustomListAdapter는

그래서 난이 사용자 정의 어댑터를 사용하는 것을 잊었다는 것입니다

을 정의되지?
private ArrayList< Players>data; 
public void CustomAdapter(Activity a, ArrayList < Players> d,Resources resLocal) { 


       activity = a; 
       data=d; 
       res = resLocal; 

       /*********** Layout inflator to call external xml layout() ***********/ 
        inflater = (LayoutInflater)activity. 
               getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     } 

는 또한 CustomAdapter 에 CustomListAdapter 변경 :

+0

이 없다'대신 CustomAdapter''의 CustomListAdapter'과'void'를 제거 않기 때문에 void를 제거합니다. – Luksprog

+0

thnx! 내 사용자 정의보기에서 '데이터 없음'이 표시됩니다. 그래서 사용자 정의보기가 작동 중입니다 :) –

답변

2

CustomAdapter 오히려

CustomListView = YoursMainActivity.this; 

이용하거나 Application.getContext(), 이러한 문제는 기본적으로 있습니다

CustomListView = this; 

를 사용하는 것보다 CustomListAdapter

public void CustomListAdapter(Activity a, ArrayList d,Resources resLocal) { 

         /********** Take passed values **********/ 
         activity = a; 
         data=d; 
         res = resLocal; 

         /*********** Layout inflator to call external xml layout() ***********/ 
          inflater = (LayoutInflater)activity. 
                 getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

       } 
1

인해 문제가 당신의 의 ArrayList의 < 플레이어>

그래서 변화이다.

1

하이해야 변경 사항을 참조하십시오 현재 상황을 제대로 파악하지 못하기 때문입니다.

1

변화 CustomListAdapter-CustomAdapter 및 생성자 반환 형식 선언을

public CustomListAdapterActivity a, ArrayList d,Resources resLocal) { 

        /********** Take passed values **********/ 
        activity = a; 
        data=d; 
        res = resLocal; 

        /*********** Layout inflator to call external xml layout() ***********/ 
         inflater = (LayoutInflater)activity. 
                getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

      }ic void CustomAdapter(Activity a, ArrayList d,Resources resLocal) { 
} 
관련 문제