Java 仅可提取列表视图
我有一个动态的绘图数组,希望在一个可滚动的列表中显示它们。我遇到的最大问题是阵列适配器。这段代码没有任何编译时错误,但运行时错误是-Java 仅可提取列表视图,java,android,listview,android-arrayadapter,Java,Android,Listview,Android Arrayadapter,我有一个动态的绘图数组,希望在一个可滚动的列表中显示它们。我遇到的最大问题是阵列适配器。这段代码没有任何编译时错误,但运行时错误是- Process: com.example.michael.myandroidappactivity, PID: 12297 java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView 但我不想使用文本视图!这是主要代码- public class
Process: com.example.michael.myandroidappactivity, PID: 12297
java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView
但我不想使用文本视图!这是主要代码-
public class cards extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_old_cards);
ListView list = (ListView)findViewById(R.id.showCardList);
cardPile tmp = cardPile.getInstance();
ArrayList<Integer> discardPile = tmp.getDiscardPile();
ArrayAdapter<Integer> imgAdapt = new ArrayAdapter<Integer>(this,R.layout.listview_layout,discardPile);
list.setAdapter(imgAdapt);
}
}您必须创建一个扩展BaseAdapter接口的新类,并修改getView方法以返回要在ListView中显示的视图。例如:
public class ImageAdapter extends BaseAdapter
{
private Context context;
private ArrayList<Integer> imagesIds;
public ImageAdapter(Context _context, ArrayList<Integer> _imageIds)
{
context = _context;
imageIds = _imageIds;
}
@Override
public int getCount()
{
return imgIds.size();
}
@Override
public Object getItem(int position)
{
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
ImageView view;
if( convertView != null ) // recycle call
{
view = (ImageView) convertView;
}
else
{
view = new ImageView(context);
image.setBackgroundResource(imageIds.get(position));
}
return view;
}
}
您需要覆盖ArrayAdapter的getView您需要创建自己的ArrayAdapter自定义子类,您可以覆盖getView并自行处理行布局膨胀和小部件填充。Baseadapter而不是ArrayAdapter如何使用为每个ListView项设置的xml布局,而不是在代码中设置ImageView可绘制的布局?顺便说一句,上面的方法奏效了!!谢谢。如果答案解决了原始问题,请将其标记为已接受。如果要使用已定义的ImageView布局,请创建Activity类型的上下文成员,然后使用view=context.findViewById R.id.yourId而不是view=new ImageViewcontext。如果这不是您想要的,请使用xml创建一个新问题,这样我们可以更好地帮助您。
list.setAdapter( new ImageAdapter( this, discardPile) );