我对此代码有疑问:
public void calendarview()
{
lv = (ListView) findViewById(R.id.calendarlist);
SharedPreferences pref = getApplicationContext().getSharedPreferences(
"animobile", MODE_PRIVATE);
int size = pref.getInt("clength", 0);
String cdate[] = new String[size];
String cevent[] = new String[size];
for(int i=0;i<size;i++){
cdate[i] = pref.getString("cdate" + i, null);
cevent[i] = pref.getString("cdate" + i, null);
}
Log.w("athan","kalendaryo"+size);
ArrayAdapter<String> arrayAdapter =
new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, cdate);
lv.setAdapter(arrayAdapter);
}
将lv作为listview,如下所示:
private ListView lv;
现在的问题是,我有这个数组cdate
和cevent
,我想让它们列在arrayadapter上,但是arrayadapter只接受一个arraylist。
我也阅读了很多其他相关的问题,但我最后得到了相同的答案,“你必须制作一个自定义适配器”。但使用此代码,是否可以使用自定义适配器?代码在:
中public class calendarview extends Activity {
编辑: 即时通讯仍然卡住,我创建了一个类似trevor-e的课程,这是代码:
class Event {
private String cdate;
private String cevent;
public Event(String date, String event) {
this.cdate = date; this.cevent = event;
}
public void setcdate(String cdate) {
this.cdate = cdate;
}
public void setcevent(String cevent) {
this.cevent = cevent;
}
public String cevent() {
return cevent;
}
public String cdate() {
return cdate;
}
//getters and setters
}
并将ArrayAdapter更改为:
ArrayAdapter<Event> arrayAdapter =
new ArrayAdapter<Event>(this,android.R.layout.simple_list_item_1);
现在代码没有给出任何值。我错过了什么?感觉就像我必须将数组设置为这个类,但我不知道如何。
答案 0 :(得分:0)
答案 1 :(得分:0)
您应该创建一个对象来封装每种类型的一个条目。像这样:
class Event {
private String date;
private String event;
public Event(String date, String event) {
this.date = date; this.event = event;
}
//getters and setters
}
然后构造用于适配器的那些对象的ArrayList。所以在这种情况下,它将是ArrayAdapter<Event>
。
编辑:正如TenFour04在评论中所说,覆盖事件的toString()方法也是明智的,因为默认情况下,适配器将在每个条目上调用toString()以获取要显示的表示。或者您可以选择子类化适配器以获得更好的控制。
答案 2 :(得分:0)
因为我无法理解这个arrayadapter,所以我改用了表:
TableLayout tl = (TableLayout) findViewById(R.id.calendarlist);
SharedPreferences pref = getApplicationContext().getSharedPreferences(
"animobile", MODE_PRIVATE);
int size = pref.getInt("clength", 0);
for(int i=0;i<size;i++){
TableRow tr = new TableRow(this);
TextView date = new TextView(this);
date.setText(pref.getString("cdate" + i, null) + " ");
tr.addView(date);
TextView event = new TextView(this);
event.setText(pref.getString("cevent" + i, null));
tr.addView(event);
tl.addView(tr);
}