0

メソッド onClick() は、position == 0 の場合にのみ機能しますか? なんで?

public class mySCAdapter extends SimpleCursorAdapter implements OnClickListener {
final String LOG_TAG = "myLogs";
LayoutInflater inflater;
public mySCAdapter(Context context, int layout, Cursor c, String[] from,
        int[] to) {

    super(context, layout, c, from, to);
    inflater = LayoutInflater.from( context );
    // TODO Auto-generated constructor stub
}

@Override
public View getView( int position, View convertView, ViewGroup parent) {
    View v = null;

    if( convertView != null )
        v = convertView;
    else
        v = inflater.inflate( R.layout.add_program_ex_list_item, parent, false);
    ImageButton button = (ImageButton) v
            .findViewById(R.id.add_program_exercise_list);
    button.setTag(position);
    button.setOnClickListener(this); 


    return super.getView(position, convertView, parent);
}

@Override
public void onClick(View v) {
    Log.d(LOG_TAG, "It works, pos=" + v.getTag());

}
}
4

2 に答える 2

1

getView()適切にオーバーライドしていません。次のようにする必要があります。

@Override
public View getView (int position, View convertView, ViewGroup parent) {
    View v = null;
    if (convertView != null)
        v = convertView;
    else
        v = inflater.inflate( R.layout.add_program_ex_list_item, parent, false);

    TextView textView = (TextView) v.findViewById(R.id.your_text_view);
    textView.setText(getItem(position));

    ImageButton button = (ImageButton) v.findViewById(R.id.add_program_exercise_list);
    button.setTag(position);
    button.setOnClickListener(this); 

    return v;
}
于 2013-06-24T11:01:24.153 に答える
0

カーソル位置を次のように設定します

それ以外の

button.setTag(position)

あなたがやる

button.setTag(cursor.getPosition());

コンストラクターでカーソルを設定できる場所。

this.cursor = c;
于 2013-06-24T10:55:58.357 に答える