Kal*_*mah 12 java android android-layout android-listview
是否可以根据其在适配器中的位置而不是ListView中的可见视图来获取项目视图?
我知道getChildAt()和getItemIdAtPosition()等函数,但是它们基于ListView中的可见视图提供信息.我也知道Android回收了视图,这意味着我只能使用ListView中的可见视图.
我的目标是为每个项目设置一个通用标识符,因为我使用的是CursorAdapter,因此我不必计算项目相对于可见项目的位置.
这就是我如何实现这一目标的.在我的(自定义)适配器类中:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
if (convertView == null) {
LayoutInflater inflater = context.getLayoutInflater();
view = inflater.inflate(textViewResourceId, parent, false);
final ViewHolder viewHolder = new ViewHolder();
viewHolder.name = (TextView) view.findViewById(R.id.name);
viewHolder.button = (ImageButton) view.findViewById(R.id.button);
viewHolder.button.setOnClickListener
(new View.OnClickListener() {
@Override
public void onClick(View view) {
int position = (int) viewHolder.button.getTag();
Log.d(TAG, "Position is: " +position);
}
});
view.setTag(viewHolder);
viewHolder.button.setTag(items.get(position));
} else {
view = convertView;
((ViewHolder) view.getTag()).button.setTag(items.get(position));
}
ViewHolder holder = (ViewHolder) view.getTag();
return view;
}
Run Code Online (Sandbox Code Playgroud)
本质上,诀窍是通过setTag和getTag方法设置和检索位置索引.该items变量是指ArrayList包含我的自定义(适配器)的对象.
另请参阅本教程以获取深入的示例.如果您需要我澄清任何事情,请告诉我.
| 归档时间: |
|
| 查看次数: |
39971 次 |
| 最近记录: |