Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 仅可提取列表视图_Java_Android_Listview_Android Arrayadapter - Fatal编程技术网

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) );