我正在使用Custom GridView,其中我有2列图像。当我将网格向下滚动到下一条记录并返回到第一行记录时,我的记录从它的位置移到一行。
意味着,当视图在getview()中重新生成时,GridView记录会从一列洗牌到另一列记录。
请推荐我。
private class ImageAdapter extends BaseAdapter {
private LinkedList<GalleryFeed> imagesLinkedList = new LinkedList<GalleryFeed>();
private Context mContext = null;
private LayoutInflater _layoutInflater = null;
private ImageLoader _feedLoader = null;
/**
*
* @param localContext
* @param mListItems
*/
public ImageAdapter(Context localContext,LinkedList<GalleryFeed> mListItems) {
mContext = localContext;
this.imagesLinkedList = mListItems;
_layoutInflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
_feedLoader = new ImageLoader(DefaultGalleryFrag.this.getActivity().getParent());
}
public int getCount() {
return imagesLinkedList != null ? imagesLinkedList.size() : 0;
}
public Object getItem(int position) {
return imagesLinkedList.get(position);
}
public long getItemId(int position) {
return 0;
}
public class ViewHolder{
public ImageView imageView=null;
public ImageView videoImageView=null;
}
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
ViewHolder viewHolder = null;
GalleryFeed bean = imagesLinkedList.get(position);
if(convertView == null){
viewHolder=new ViewHolder();
LayoutInflater linf = (LayoutInflater) mContext
.getSystemService(mContext.LAYOUT_INFLATER_SERVICE);
v = linf.inflate(R.layout.item_gallery_image, null);
viewHolder.imageView=(ImageView)v.findViewById(R.id.image);
viewHolder.videoImageView=(ImageView)v.findViewById(R.id.videoPalyIV);
/**
* SET THE RESOLUTION PIC ON IMAGE VIEW
*/
if(bean.getMediaType()!=null && bean.getMediaType().equalsIgnoreCase("Image")){
if(bean.getResolution280()!=null && bean.getResolution280().length()>0){
File imgFile = new File(bean.getResolution280());
if(imgFile.exists()&& imgFile.length()>0){
Bitmap myBitmap = Constant.getBitmap(imgFile.getAbsolutePath());
if(myBitmap!=null){
viewHolder.imageView.setTag(bean.getResolution280());
Drawable d = new BitmapDrawable(getResources(),myBitmap);
viewHolder.imageView.setImageDrawable(d);
}else{
_feedLoader.DisplayImage(bean.getResolution280(), R.drawable.loader, viewHolder.imageView);
}
}else{
_feedLoader.DisplayImage(bean.getResolution280(), R.drawable.loader, viewHolder.imageView);
}
}else{
_feedLoader.DisplayImage(bean.getResolution280(), R.drawable.loader, viewHolder.imageView);
}
viewHolder.videoImageView.setVisibility(View.GONE);
}else{
/**
* IF ITS A VIDEO FEED
*/
viewHolder.videoImageView.setVisibility(View.VISIBLE);
//_feedLoader.DisplayImage(bean.getVideoFrame(), R.drawable.loader, viewHolder.imageView);
viewHolder.imageView.setBackgroundResource(R.drawable.profile_pic);
}
/*if(mediaLeftForDownload.contains(String.valueOf(position))&& _mediaUrlList!=null &&_mediaUrlList.size()>0){
_imageLoader.DisplayImage(_mediaUrlList.get(position), R.drawable.loader, viewHolder.imageView);
}else{
viewHolder.imageView.setBackgroundDrawable(imagesLinkedList.get(position));
}*/
v.setTag(viewHolder);
}
else{
viewHolder = (ViewHolder) v.getTag();
}
DisplayMetrics dm = new DisplayMetrics();
DefaultGalleryFrag.this.getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
int screenWidth = dm.widthPixels;
if(screenWidth<500){
viewHolder.imageView.setLayoutParams(/*new GridView.LayoutParams(300,300)*/ new LayoutParams(200,200));
}else{
viewHolder.imageView.setLayoutParams(new LayoutParams(300,300));
}
return v;
}
}
如图所示:
/**
* Adapter for our image files.
*/
private class ImageAdapter extends BaseAdapter {
private LinkedList<GalleryFeed> imagesLinkedList = new LinkedList<GalleryFeed>();
private Context mContext = null;
private LayoutInflater _layoutInflater = null;
private ImageLoader _feedLoader = null;
/**
*
* @param localContext
* @param mListItems
*/
public ImageAdapter(Context localContext,LinkedList<GalleryFeed> mListItems) {
mContext = localContext;
this.imagesLinkedList = mListItems;
_layoutInflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
_feedLoader = new ImageLoader(DefaultGalleryFrag.this.getActivity().getParent());
}
public int getCount() {
return imagesLinkedList != null ? imagesLinkedList.size() : 0;
}
public Object getItem(int position) {
return imagesLinkedList.get(position);
}
public long getItemId(int position) {
return 0;
}
public class ViewHolder{
public ImageView imageView=null;
public ImageView videoImageView=null;
}
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
ViewHolder viewHolder = null;
GalleryFeed bean = imagesLinkedList.get(position);
if(convertView == null){
viewHolder=new ViewHolder();
LayoutInflater linf = (LayoutInflater) mContext
.getSystemService(mContext.LAYOUT_INFLATER_SERVICE);
v = linf.inflate(R.layout.item_gallery_image, null);
viewHolder.imageView=(ImageView)v.findViewById(R.id.image);
viewHolder.videoImageView=(ImageView)v.findViewById(R.id.videoPalyIV);
v.setTag(viewHolder);
}
else{
viewHolder = (ViewHolder) v.getTag();
}
/**
* SET THE RESOLUTION PIC ON IMAGE VIEW
*/
if(bean.getMediaType()!=null && bean.getMediaType().equalsIgnoreCase("Image")){
if(bean.getResolution280()!=null && bean.getResolution280().length()>0){
File imgFile = new File(bean.getResolution280());
if(imgFile.exists()&& imgFile.length()>0){
Bitmap myBitmap = Constant.getBitmap(imgFile.getAbsolutePath());
if(myBitmap!=null){
viewHolder.imageView.setTag(bean.getResolution280());
Drawable d = new BitmapDrawable(getResources(),myBitmap);
viewHolder.imageView.setImageDrawable(d);
viewHolder.imageView.setTag(bean.getMediaId());//===set tag
}else{
_feedLoader.DisplayImage(bean.getResolution_280_280URL(), R.drawable.loader, viewHolder.imageView);
viewHolder.imageView.setTag(bean.getMediaId());//===set tag
}
}else{
_feedLoader.DisplayImage(bean.getResolution_280_280URL(), R.drawable.loader, viewHolder.imageView);
viewHolder.imageView.setTag(bean.getMediaId());//===set tag
}
}else{
_feedLoader.DisplayImage(bean.getResolution_280_280URL(), R.drawable.loader, viewHolder.imageView);
viewHolder.imageView.setTag(bean.getMediaId());//===set tag
}
viewHolder.videoImageView.setVisibility(View.GONE);
}else{
/**
* IF ITS A VIDEO FEED
*/
viewHolder.videoImageView.setVisibility(View.VISIBLE);
viewHolder.imageView.setTag(bean.getMediaId());//===set tag
//_feedLoader.DisplayImage(bean.getVideoFrame(), R.drawable.loader, viewHolder.imageView);
Bitmap icon = BitmapFactory.decodeResource(DefaultGalleryFrag.this.getActivity().getParent().getResources(),
R.drawable.profile_pic);
viewHolder.imageView.setImageBitmap(icon);
}
DisplayMetrics dm = new DisplayMetrics();
DefaultGalleryFrag.this.getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
int screenWidth = dm.widthPixels;
if(screenWidth<500){
viewHolder.imageView.setLayoutParams(/*new GridView.LayoutParams(300,300)*/ new LayoutParams(200,200));
}else{
viewHolder.imageView.setLayoutParams(new LayoutParams(300,300));
}
return v;
}
}
viewholder模式是这样工作的,在getView中:
ViewHolder holder = null;
if (convertView == null) {
convertView = inflater.inflate(R.layout.myLayout, null);
holder = new ViewHolder();
// Populate the holder
holder.textView = (TextView) convertView.findViewById(R.id.myTextView);
holder.imageView = (ImageView) convertView.findViewById(R.id.myImageView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
// Now, populate the views referenced by the viewHolder:
holder.textView.setText("Hello World");
整个想法是,您不知道convertView是否将为null(即您将创建一个新视图),或者它是否将从以前的现有视图中回收,从而节省充气时间。
在您的情况下,您仅在转换视图
为空时填充视图。您需要将填充代码移到if子句之外。
以下是我的一些疑问: 我有两个不同的流,元素按顺序排列。 1)现在,当我在这些流中的每一个上执行时,会维护顺序吗?(因为这里的每个组都将仅发送给一个任务管理器)我的理解是,记录将是一个组的顺序,在这里纠正我。 2) 在这两个流上执行按键操作后,我正在进行联合分组,以获取匹配和非匹配记录。这里也会维持秩序吗?,因为这也适用于KeyedStream。我正在使用事件时间(EventTime)和上升时间(
我有一个记录按顺序到达的流。我应用了一个map函数,然后在上面应用了keyBy函数。在每个具有相同键的记录流中,记录的顺序是否会保持? 在按顺序排列记录方面也存在类似的问题。但是我对这里给出的答案和下面从链接“https://ci.apache.org/projects/flink/flink-docs-release-1.2/concepts/programming-model.html”中复制
我有下面的dataframe示例。 给定一个模板,我想根据列的新顺序更改行的顺序,因此它看起来像: 我找到了下面的线程,但是洗牌是随机的。Cmmiw。 洗牌数据帧行
问题内容: 我有两个与ElasticSearch有关的问题。 1)有什么方法可以指定我想要特定字段的结果以降序排列吗?等效SQL查询为: 2)如何获得第一和最后(最新)记录? 问题答案: 1)Elasticsearch具有相当完善的Sorting API ,可让您控制排序顺序。因此,在elasticsearch中,等效于您的MySql查询如下所示: 排序也可以在_search URI上指定。 2)
本文向大家介绍从列表中排除一些ID记录,并在MySQL中显示其余记录,包括了从列表中排除一些ID记录,并在MySQL中显示其余记录的使用技巧和注意事项,需要的朋友参考一下 要排除记录,请使用MySQL NOT 。让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 以下是排除记录的查询- 这将产生以下输出-
(0,0)(0,1) (1,0)(1,1) 像这种格式一样,我需要显示,也需要根据数据大小水平和垂直滚动