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