您的位置:首页 > 移动开发 > Android开发

Android 中 CursorAdapter 的用法

2014-04-10 16:34 274 查看
前段时间做一个app被cursoradapter中没有position困扰了很久,在网上大量搜索竟然没找到答案,今日再次看到,突然灵光一现,其实这个问题很简单cursor中有一个方法getPosition(),然而覆盖的bindView(Cursor c)中有cursor参数,所以我们便可以定义一个final int position与每一个ItemView绑定起来position=cursor.getPosition()。

public void bindView(final View view, final Context context, final Cursor cursor)
{
final int position=cursor.getPosition();
final ViewHolder holder = new ViewHolder();
holder.item = view.findViewById(R.id.item);
holder.name = (TextView) view.findViewById(R.id.name);
holder.more = (ImageButton) view.findViewById(R.id.more);
holder.descDivider=view.findViewById(R.id.desc_divider);
holder.desc=(TextView)view.findViewById(R.id.desc);

holder.item.setOnLongClickListener(new View.OnLongClickListener()
{
@Override
public boolean onLongClick(View v)
{
mDialog.setDescMsg(cursor.getString(cursor.getColumnIndex("pkg_desc")));
mDialog.show(((MainActivity) context).getSupportFragmentManager(), null);
return true;
}
});

holder.name.setText(cursor.getString(cursor.getColumnIndex("pkg_name")));
holder.desc.setText(cursor.getString(cursor.getColumnIndex("pkg_desc")));

holder.descDivider.setVisibility(map.get(position));
holder.desc.setVisibility(map.get(position));

holder.more.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
if(holder.desc.getVisibility()==View.GONE)
{
map.put(position, View.VISIBLE);
}else
{
map.put(position, View.GONE);
}
notifyDataSetChanged();
}
});
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息