2016-11-17 92 views
0

我想創建我的第一個自定義適配器來爲我的android應用程序生成一個列表視圖。我從一個API調用得到我的數據,然後對其進行處理並將其存儲在一個ArrayList: - 在onpostexecute部分我想如下創建一個列表視圖和自定義適配器,以顯示我的數據構造函數不匹配自定義適配器

class Person{ 
    String bioguide; 
    String image; 
    String lastname; 
    String firstname; 
    String district; 
    String state; 
    String party;} 

public static ArrayList<Person> personData = new ArrayList<Person>(); 

現在: -

ListView yourListView = (ListView) rootView.findViewById(R.id.state_listView); 
ListAdapter customAdapter = new ArrayAdapter<Person>(ByState.this, R.layout.bystate_itemview,personData);  
      yourListView .setAdapter(customAdapter); 
     } 
    } 
    public class ListAdapter extends ArrayAdapter<Person> {  
     public ListAdapter(Context context, int textViewResourceId) { 
      super(context, textViewResourceId); 
     }  
     public ListAdapter(Context context, int resource, ArrayList<Person> items) { 
      super(context, resource, items); 
     }  
     @Override 
     public View getView(int position, View convertView, ViewGroup parent) {  
      View v = convertView;  
      if (v == null) { 
       LayoutInflater vi; 
       vi = LayoutInflater.from(getContext()); 
       v = vi.inflate(R.layout.bystate_itemview, null); 
      }  
      Person p = getItem(position);  
      if (p != null) { 
       TextView tt1 = (TextView) v.findViewById(R.id.last_name); 
       TextView tt2 = (TextView) v.findViewById(R.id.first_name);  
       if (tt1 != null) { 
        tt1.setText(p.getLastname()); 
       }  
       if (tt2 != null) { 
        tt2.setText(p.getFirstname()); 
       } 
      }  
      return v; 
     }  
    } 
} 

我得到了上面的代碼,一些互聯網教程。事情是我在我使用customadapter首先調用自定義適配器的構造函數的行中出現錯誤。它說無法解析構造函數。有人可以幫助我理解這一點。我知道我沒有爲我的案例定義適當的構造函數,請讓我知道這些變化。我在一個片段內創建了listview,片段類名是ByState。

+0

使用RecyclerView,更多特色的東西。 http://www.androidhive.info/2016/01/android-working-with-recycler-view/ –

回答

0

在第二行替換

ListAdapter customAdapter = new ArrayAdapter<Person>(ByState.this, R.layout.bystate_itemview,personData); 

通過

ListAdapter customAdapter = new ListAdapter(ByState.this, R.layout.bystate_itemview, personData); 

您可以創建自己的適配器類,但調用非標準ArrayAdapter

+0

但構造函數使用上下文,如果我給ByState.this它仍然給出錯誤。 – Anirban

+0

@Anirban我不知道從你的代碼,什麼是ByState。如果這不是上下文或活動,然後找到它並使用作爲第一個參數 –

+0

ByState是一個片段 – Anirban