gpt4 book ai didi

android - GrivView BaseAdapter 中的绝对位置

转载 作者:太空宇宙 更新时间:2023-11-03 10:54:15 25 4
gpt4 key购买 nike

我正在尝试将 BaseAdapter 写入我的 GrivView 但在

public View getView(int position, View convertView, ViewGroup parent) { ... }

渲染下一个元素时的位置是:

visible elements
---------------
| 1 2 3 |
| 4 5 6 | <--- screen
| 7 8 9 |
---------------

nonvisible elements
| 1 2 3 | <-- below visible area
| 4 5 6 |

真正的地方是:

visible elements
---------------
| 1 2 3 |
| 4 5 6 |
| 7 8 9 |
---------------

nonvisible elements
| 10 11 12 |
| 13 14 15 |

我知道这是正确的行为(它只计算可见元素),但如何获得列表中项目的真实位置?或者如何知道我应该返回哪个布局?

编辑:然而,返回的数字比我显示的随机得多,即使在屏幕上也是如此。

最佳答案

使用 BaseAdapter 完全像 Google Documentatnion显示效果很好。

我的问题是:

  • 使用 ViewHolder

  • 或者试图在 viewHolder 中保存 id

我应该按如下方式使用 ViewHolder:

public View getView(int position, View convertView, ViewGroup parent) {
// create holder
ViewHolder holder; // check if layout exists

if (convertView == null) { // if it's not recycled, initialize some

LayoutInflater inflater = LayoutInflater.from(mContext);
convertView = (LinearLayout) inflater.inflate(R.layout.card_prev,
null);

// Create layout elements
ImageView image = (ImageView) convertView
.findViewById(R.id.imageViewThumbnail);

TextView desc = (TextView) convertView
.findViewById(R.id.textViewDescription);


// Place layout elements in holder
holder = new ViewHolder();
holder.id = position;
holder.preview = image;
holder.text = desc;

convertView.setTag(holder);
} else {
// Get existing holder
holder = (ViewHolder) convertView.getTag();
}

// Update layout here using layout elements from holder
String imageName = "image_" + (position + 1);
final int imageId = mContext.getResources().getIdentifier(imageName,
"drawable", "com.myapp");

holder.text.setText("" + (position+1));

holder.preview.setImageResource(imageId);

holder.preview.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
Intent fullScreenIntent = new Intent(v.getContext(),
FullScreenImage.class);
fullScreenIntent.putExtra("imageRes", imageId);

MainMenuActivity.currentShownActivity
.startActivity(fullScreenIntent);

}
});

return convertView;
}

关于android - GrivView BaseAdapter 中的绝对位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8314859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com