0

Я хочу настроить Activity с помощью GridView, который имеет пользовательские представления, которые добавляются с помощью ArrayAdapter, но на эмуляторе gridview ничего не отображает, вот мой кодНастройка GridView с пользовательскими представлениями с использованием ArrayAdapter

Деятельность с 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; 
    }} 

Формуляром пользовательский элемент

<?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

Какая у вас авария? Я думаю, что это исключение NullPointerException в 'items'. Вам нужно инициализировать его: 'List items = new ArrayList <>();'. И вам может потребоваться вызвать notifyDataSetChanged(); в конце вашего конструктора, если у вас ничего не отображается (но я не уверен в этом). –

 Смежные вопросы

  • Нет связанных вопросов^_^