1

我有一个 ListView,我使用 setScrollY 滚动到特定位置。出于某种原因,如果我使用 setScrollY 滚动到应该显示第 7 项的坐标,它是空白的。我的清单上有超过 6 项。

我在 getView 上写了一个日志,它只处理前 6 个项目。

在屏幕上,列表中只有 6 个项目可见。

getView 需要发生什么来处理其他项目?

如果我手动滚动 ListView,getView 会正确处理其他项目。

我的活动代码如下:

public class SampleActivity extends Activity  {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_choose_bride_groom_or_guest);

    lvImages = (ListView) findViewById(R.id.image_list);
    lvImages.setEnabled(false);

    drawableIds = new ArrayList<Integer>();
    drawableIds.add(R.drawable.auth_background_row_1);
    drawableIds.add(R.drawable.auth_background_row_2);
    drawableIds.add(R.drawable.auth_background_row_3);
    drawableIds.add(R.drawable.auth_background_row_4);
    drawableIds.add(R.drawable.auth_background_row_5);
    drawableIds.add(R.drawable.auth_background_row_6);
    drawableIds.add(R.drawable.auth_background_row_7);
    drawableIds.add(R.drawable.auth_background_row_8);
    drawableIds.add(R.drawable.auth_background_row_9);

    adapter = new AuthBackgroundImageAdapter(this, drawableIds);

    lvImages.setAdapter(adapter);

    int scrollY = //some number which is higher than the screen height.

    lvImages.setScrollY(scrollY);

}


}

适配器

public class AuthBackgroundImageAdapter extends BaseAdapter {

private static final String TAG = "AuthBackgroundImageAdapter";
private final LayoutInflater inflater;
Context context;
List<Integer> drawableIds;

class Holder {
    ImageView ivBackground;
}


public AuthBackgroundImageAdapter(Context context, List<Integer> drawableIds) {
    this.drawableIds = drawableIds;
    this.context = context;
    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

public void addItem(Integer drawableId) {
    drawableIds.add(drawableId);
}

@Override
public int getCount() {
    return drawableIds.size();
}

@Override
public Object getItem(int i) {
    return drawableIds.get(i);
}

@Override
public long getItemId(int i) {
    return i;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View view = convertView;

    Holder holder;

    if (convertView == null) {
        view = inflater.inflate(R.layout.item_auth_background_image, null);
        holder = new Holder();
        holder.ivBackground = (ImageView) view.findViewById(R.id.auth_background_image);
        view.setTag(holder);
    } else {
        holder = (Holder) view.getTag();
    }

    Integer item = (Integer) this.getItem(position);
    holder.ivBackground.setImageDrawable(context.getResources().getDrawable(item));

    Log.d(TAG, "getView: position " + String.valueOf(position));
    Log.d(TAG, "getView: drawable " + String.valueOf(item));

    return view;
}


}

布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent" >

<ListView
        android:id="@+id/image_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />

4

1 回答 1

0

尝试使用值更改android:layout_height参数wrap_content

      <ListView
        android:id="@+id/image_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
      />
于 2013-07-18T20:47:56.073 回答