我正在尝试创建一个ListView,我可以在ListView中的每个项目中绘制一些基本形状。我发现很多使用ListView中的视图/布局来添加图像等的例子,但我不确定如何使用Canvas或类似方法绘制每个图像。此外,这些示例似乎都以稍微不同的方式工作,所以我想知道最佳策略是什么。
目前我只有一个Main类,用基本文本填充ListView。
Main.java
public class Main extends Activity {
private ListView listView;
String[] list = {"One","Two","Three"};
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.main);
listView = (ListView)findViewById(R.id.ListView1);
listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list));
}
}
现在我收集我需要在这里更改Adapter位,还要编写另一个可能扩展View的类,我可以绘制它,然后将它作为ListView中的项添加?
提前感谢您的帮助。
答案 0 :(得分:2)
您需要将ListView子类化为自定义实现。
public class CustomListAdapter extends ArrayAdapter<CustomRowData> {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
CustomRowData currentRow = getItem(position);
View customRowView = .... // such as CustomRowView below.
...
...
return customRowView;
}
}
您可以使用相应的ListView
代码替换...
来更改View
中每行的视图。
例如,您可以使用SurfaceView
来绘制它。
class CustomRowView extends SurfaceView {
...
...
@Override
public void onDraw(Canvas canvas) {
// Use |canvas| to draw on..
}
}
上述代码未经过测试,但希望能够引导您走向正确的方向。确保优化绘图,例如在可用时使用缓存,预处理等。