我有一个:
List<Fixture> allFixture = new List<Fixture>();
每个夹具:
class Fixture
{
public int _id { get; set; }
public string Home { get; set; }
public DateTime matchDate { get; set; }
public string Away { get; set; }
}
我可以在ListAdapter上显示Home[]:
ListAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, allFixture.Select(x => x.Home).ToArray())
但是我想显示这样的东西:" Home vs Away "和DateTime下面。我该怎么做呢?
Nicola链接的内容提供了正确的信息。对于你特别要求的,你需要实现一个自定义适配器并覆盖getView方法。
例如:public class ExampleArrayAdapter extend ArrayAdapterAdapter<MyCustomItem>
{
private Context mContext;
private List<MyCustomItems> mCustomItems;
public ExampleArrayAdapter(Context context, List<MyCustomItem> customItems)
{
mContext = context;
mCustomItems = customItems;
}
@Override
public View getView (int position, View convertView, ViewGroup parent)
{
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// Create the view of your row item here
View rowView = inflater.inflate(R.layout.my_custom_layout, parent, false);
}
}
public class MyActivity extends listActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
List<MyCustomItem> customItems = new ArrayList<MyCustomItems();
// create your items...
ExampleArrayAdapter arrayAdapter = new ExampleArrayAdapter(this, customItems);
setListAdapter(arrayAdapter);
}
}
创建Fixture布局并在getView中填充。
my_custom_layout:
<LinearLayout
android:id="@+id/listItem"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/textTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Default"/>
<TextView
android:id="@+id/textDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="20140805"/>
</LinearLayout>
尝试扩展ArrayAdapter以使用不止一个字符串。
您可以扩展它以使用您的类Fixture,然后也膨胀一个新的布局文件,而不是simpleListItemLayout。
你需要一个新的xml文件,你将膨胀。
- 扩展arrayadapter
private class SampleAdapter extends ArrayAdapter<Fixture> { public InteractiveArrayAdapter(Activity context, List<Model> list) { super(context, R.layout.rowbuttonlayout, list); this.context = context; this.list = list; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = null; LayoutInflater inflator = context.getLayoutInflater(); view = inflator.inflate(R.layout.YOUR_XML_LAYOUT, null); //find views that you want to access and populate here. return view; } }
创建一个新的xml文件,这可以是任何您想要的,并且在数组适配器中您将膨胀新的xml。
对不起,我的格式都关闭了
还可以查看http://java.dzone.com/articles/android-listview-optimizations使用viewHolder模式来优化代码以实现平滑滚动。