我想设置一个带有GridView的Activity,它具有使用ArrayAdapter添加的自定义视图,但在模拟器上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","a@outlook.fr");
Contact c2 = new Contact(2,"b","cd","02","b@outlook.fr");
Contact c3 = new Contact(3,"c","ef","03","c@outlook.fr");
Contact c4 = new Contact(4,"d","gh","04","d@outlook.fr");
Contact c5 = new Contact(5,"e","ij","05","e@outlook.fr");
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>
答案 0 :(得分:0)
您需要为getCount和getItemId方法提供一些代码。例如:
DECLARE @Invoices AS TABLE (InvoiceNo INT, dateIssues DATETIME)
INSERT INTO @Invoices VALUES
(1,'2016-10-30 00:00:00.000')
,(2,'2016-12-01 00:00:00.000')
,(3,'2016-11-03 00:00:00.000')
,(4,'2016-11-24 00:00:00.000')
,(5,'2016-09-09 00:00:00.000')
DECLARE @N INT = 20
SELECT
*
FROM
@Invoices
WHERE
dateIssues >=
CASE WHEN DAY(GETDATE()) < @N
THEN DATEADD(MONTH,-1,DATEADD(DAY,1 - DAY(GETDATE()),CAST(GETDATE() AS DATE))) --beginning of last month
ELSE DATEADD(DAY,1 - DAY(GETDATE()),CAST(GETDATE() AS DATE)) --beginning of this month
END