【发布时间】:2014-09-11 09:57:41
【问题描述】:
我目前正在制作我的应用程序的一部分,以使用 Gridview 从图库中选择多个图像。 问题是我需要在第一个项目上放一个按钮,其余的将是图像(0,0 将是按钮,其余的很好,带有复选框的图像视图)该按钮将使用手机摄像头。我能够做到,但作为交换,它滚动不顺畅,有没有办法解决这个问题?以下是我的代码:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
View view;
System.out.println(position);
if (position == 0) {
holder = new ViewHolder();
view = getLayoutInflater().inflate(R.layout.year_dropdownlayout, parent, false);
holder.mButton = (Button) view.findViewById(R.id.mfreakingBtn);
ViewGroup.LayoutParams params = holder.mButton.getLayoutParams();
params.height = 250;
params.width = 250;
holder.mButton.requestLayout();
} else {
view = getLayoutInflater().inflate(R.layout.select_photos_layout, parent, false);
holder = new ViewHolder();
holder.imageView = (ImageView) view.findViewById(R.id.imageView1);
holder.mCheckBox = (CheckBox) view.findViewById(R.id.checkBox1);
holder.mCheckBox.setOnCheckedChangeListener(mCheckedChangeListener);
holder.progressBar = (ProgressBar) view.findViewById(R.id.progress);
holder.mButton = null;
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "You Clicked " + position, Toast.LENGTH_LONG).show();
}
});
imageLoader.displayImage("file://" + imageUrls.get(position), holder.imageView, options, new SimpleImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
holder.progressBar.setProgress(0);
holder.progressBar.setVisibility(View.VISIBLE);
}
@Override
public void onLoadingFailed(String imageUri, View view,
FailReason failReason) {
holder.progressBar.setVisibility(View.GONE);
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
Animation anim = AnimationUtils.loadAnimation(MultiPhotoSelect.this, R.anim.fade_in);
holder.imageView.setAnimation(anim);
anim.start();
holder.progressBar.setVisibility(View.GONE);
}
}, new ImageLoadingProgressListener() {
@Override
public void onProgressUpdate(String imageUri, View view, int current,
int total) {
holder.progressBar.setProgress(Math.round(100.0f * current / total));
}
}
);
holder.mCheckBox.setTag(position);
holder.mCheckBox.setChecked(mSparseBooleanArray.get(position));
}
return view;
}
不要介意布局的名称。 :) 当你感到沮丧时会发生这种情况。我一直在寻找几个小时。我发现有人在 gridview 的末尾放了一个按钮:Android - Different items in GridView not showing up
我希望有人可以帮助我。提前致谢。 :)
【问题讨论】:
-
这是因为你总是膨胀新的视图实例。检查 convertView 实例是否为空。如果为 null,那么这是您唯一应该放大视图的时间。请参阅 BaseAdapter.getItemViewType()、BaseAdapat.getItemViewTypeCount()。看到这个:learn2crack.com/2014/01/android-custom-gridview.html
标签: java android button gridview