0

ArrayAdapterを使用して追加されたカスタムビューを持つGridViewでアクティビティを設定したいが、エミュレータではgridviewに何も表示されない、ここにmy codeArrayAdapterを使用してカスタムビューでGridViewを設定する

GridViewの有する活性

public class ContactActivity extends AppCompatActivity{ 
@Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.contact_activity); 
    GridView gv = (GridView) findViewById(R.id.gv); 
    Contact c1 = new Contact(1,"a","ab","01","[email protected]"); 
    Contact c2 = new Contact(2,"b","cd","02","[email protected]"); 
    Contact c3 = new Contact(3,"c","ef","03","[email protected]"); 
    Contact c4 = new Contact(4,"d","gh","04","[email protected]"); 
    Contact c5 = new Contact(5,"e","ij","05","[email protected]"); 

    List<Contact> listc = new ArrayList<>(); 
    listc.add(c1); 
    listc.add(c2); 
    listc.add(c3); 
    listc.add(c4); 
    listc.add(c5); 
    ContactAdapter ca = new ContactAdapter(this, R.layout.item, listc); 
    gv.setAdapter(ca); 
    Intent intent = getIntent(); 
    final Intent i = new Intent(this, AjouterContactActivity.class); 
    FloatingActionButton a = (FloatingActionButton) findViewById(R.id.fab); 
    a.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      startActivity(i); 
     } 
    }); 
}} 

ArrayAdapter

public class ContactAdapter extends ArrayAdapter { 
List<Contact> items; 
int viewResourecId; 

public ContactAdapter(Context context, int viewResourecId, List<Contact> items) { 
    super(context,viewResourecId); 
    this.viewResourecId=viewResourecId; 
    this.items=items; 
} 

@Override 
public int getCount() { 
    return 0; 
} 



@Override 
public long getItemId(int position) { 
    return 0; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View itemView= convertView; 
    if(convertView==null){ 
     LayoutInflater inflater1 = (LayoutInflater) ((ContactActivity)getContext()).getLayoutInflater(); 
     itemView = inflater1.inflate(viewResourecId,parent,false); 
    } 
    TextView tv1 = (TextView)itemView.findViewById(R.id.name); 
    TextView tv2 = (TextView)itemView.findViewById(R.id.cap); 
    tv2.setText(items.get(position).getNom().charAt(0)); 
    tv1.setText(items.get(position).getNom()+"   "+items.get(position).getPrenom()); 
    return itemView; 
    }} 

カスタムアイテムレイアウト

0を拡張するクラス
<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"> 
<TextView 
    android:layout_width="192dp" 
    android:layout_height="50dp" 
    android:id="@+id/cap" 
    android:gravity="center|top" 
    /> 
<TextView 
    android:layout_width="192dp" 
    android:layout_height="10dp" 
    android:id="@+id/name" 
    android:layout_below="@+id/cap" 
    android:gravity="center|bottom" 
    /> 
</RelativeLayout> 

Here's an image of the acticivity

答えて

0

あなたは同様にgetCountとgetItemId方法にいくつかのコードを与える必要があります。例:

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



@Override 
public long getItemId(int position) { 
    return position; 
} 
+0

これで、何も表示されずにクラッシュします。 –

+0

クラッシュは何ですか?私は 'items'のNullPointerExceptionだと思います。あなたはそれを初期化する必要があります: 'List items = new ArrayList <>();'。また、notifyDataSetChanged()を呼び出す必要があります。コンストラクタの最後に何も表示されていない場合(ただし、私はそれについてはわかりません)。 –

関連する問題