当我点击call_btn按钮时,它显示错误的位置!
喜欢这张照片是我的listview:
(红色数字错了)

public class MyAdapter extends CursorAdapter
{
Context b;
LayoutInflater inflater;
@SuppressWarnings("deprecation")
public MyAdapter(Context context, Cursor c) {
super(context, c);
inflater = LayoutInflater.from(context);
b= (Context) context;
}
@Override
public void bindView(View view, Context context, final Cursor cursor) {
// TODO Auto-generated method stub
TextView tv1 = (TextView)view.findViewById(R.id.txt_name);
TextView tv2 = (TextView)view.findViewById(R.id.txt_numer);
tv1.setText(cursor.getString(2));
tv2.setText(cursor.getString(3));
final Button call_btn= (Button)view.findViewById(R.id.call_btn);
call_btn.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
Toast.makeText(b, cursor.getString(1), Toast.LENGTH_SHORT).show();
}});
}
protected Context getActivity() {
// TODO Auto-generated method stub
return null;
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
return inflater.inflate(R.layout.item, parent, false);
}
}
Run Code Online (Sandbox Code Playgroud)
我之前见过这些问题:
mik*_*guy 13
A Cursor只是数据库中的结果集,其中位置指针指向当前行.当您滚动列表并根据光标数据填充新行时,此位置指针会自动移动到您的下方.
因此,当bindView()为列表中的每一行调用时,位置设置正确,这就是为什么TextViews具有正确的文本,但是当call_btn.onClick()调用时,我们不知道光标的当前位置是什么,并且肯定没有保证它指向与被调用时onClickListener实例化时相同的位置bindView().
解决方案非常简单.尝试bindView()使用下面的编辑版本替换您的方法,该版本明确保存位置,然后使用该方法将光标移动到方法中的右侧行onClick():
@Override
public void bindView(View view, Context context, final Cursor cursor) {
// TODO Auto-generated method stub
TextView tv1 = (TextView)view.findViewById(R.id.txt_name);
TextView tv2 = (TextView)view.findViewById(R.id.txt_numer);
tv1.setText(cursor.getString(2));
tv2.setText(cursor.getString(3));
final Button call_btn= (Button)view.findViewById(R.id.call_btn);
final int position = cursor.getPosition();
call_btn.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
cursor.moveToPosition(position);
Toast.makeText(b, cursor.getString(1), Toast.LENGTH_SHORT).show();
}});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2707 次 |
| 最近记录: |