私はApple
2 つのフィールドを持つクラスを持ってcolour
おりrotation
、AppleView
そのメソッドでリンゴをその色と回転で描画しますonDraw
(これは私の実際のコードを簡略化したものです)。AppleView には、再割り当て可能なデフォルトのリンゴ (たとえば、赤で 0 度回転したもの) があります。2 つのクラスの疑似コードを次に示します。
public class Apple {
int colour;
int rotation;
}
public class AppleView extends View {
Apple apple = getDefaultApple();
@Override
protected void onDraw(Canvas canvas) {
drawApple(canvas, apple);
}
}
りんごの ArrayList から AppleViews の ListView を作成したいと思います。2 つのレイアウトを作成します: ListView ( R.layout.list_view
):
<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@android:id/list">
</ListView>
AppleView
および( )だけのリスト項目R.layout.list_item
:
<?xml version="1.0" encoding="utf-8"?>
<com.mypackage.AppleView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/apple">
</com.mypackage.AppleView>
最後にListActivity
、カスタム アダプター クラスを拡張して使用し、リスト項目を描画します。
public class MyListActivity extends ListActivity {
ArrayList<Apple> apples = new ArrayList<Apple>();
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_view);
// Add 100 random apples to the list for demonstration.
for (int i = 0; i < 100; i++) {
apples.add(getRandomApple());
}
getListView().setAdapter(new MyAdapter(this, R.layout.list_item, apples));
}
class MyAdapter extends ArrayAdapter<Apple> {
public MyAdapter(Context context, int resourceID, ArrayList<Apple> items) {
super(context, resourceID, items);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = getLayoutInflater().inflate(R.layout.list_item, parent, false);
}
// Change this AppleView's apple to the new ArrayList element at this position.
AppleView appleView = (AppleView) convertView.findViewById(R.id.apple);
appleView.apple = apples.get(position);
return convertView;
}
}
}
すべての適切なメソッドが呼び出されていますが (つまり、各リンゴの getView と onDraw)、ListView は表示されません。
上記のコードのどこにエラーがありますか?