0

Buttonmy のすべてのセルにある a の XML の一部を次に示しますListView

android:onClick="buttonTouched"

そして、これは私の ListActivity で呼び出されるものです:

public void buttonTouched(View v) 
{
    // how do I get the "position" of the cell this view is on?
}

positionタッチされたボタンのセルを取得するにはどうすればよいですか?

4

3 に答える 3

0

これを見てください: OnItemClickListener。実装例:カスタム ListView の setOnItemClickListener

リスト ビューの各行に 3 つのボタンがあり、それらに対して 3 つの diff 実装があるため、これを行う別の方法があります。

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

    if(null == convertView){
        holder = new ViewHolder();
        convertView = inflater.inflate(LAYOUT_RESOURCE, null);
        holder.btn1 = (Button) convertView.findViewById(R.id.btn1);
        holder.btn2 = (Button) convertView.findViewById(R.id.btn2);
        holder.btn3 = (Button) convertView.findViewById(R.id.btn3);
        //setting tag to reduce hierarchy lookup
        convertView.setTag(holder);
    } else {
        //getting tag to obtain the already found views
        holder = (ViewHolder) convertView.getTag();
    }
    //Updating fields
    holder.btn1.setOnClickListener(commonListener); 
    holder.btn2.setOnClickListener(commonListener); 
    holder.btn3.setOnClickListener(commonListener); 
    //returning the populated view
    return convertView;
}

OnClickListener commonListener = new OnClickListener(){

    @Override
        public void onClick(View v) {
            switch(v.getId()){
                case R.id.btn1:
                //do your work
                break;
            case R.id.btn2:
                //do your work
                break;
                case R.id.btn3:
                //do your work
                break;
                default:
                break;
            }
        }
    }); 
/**
 * Holder class to improve performance. Helps in reducing the lookup for
 * views.
 * 
 */
private static class ViewHolder {

    Button btn1;
    Button btn2;
    Button btn3;
}

お役に立てれば。

于 2012-11-15T08:19:04.260 に答える
0

アダプタでこれを試してください:

@Override
public View getView(final int position, View convertView, ViewGroup parent)
{
    View row = convertView;
    YourWrapper wrapper = null;

    if (row == null)
    {
        row = inflater.inflate(R.layout.layout, parent, false);
        wrapper = new YourWrapper (row);
        row.setTag(wrapper);
    }
    else
        wrapper = (YourWrapper) row.getTag();

    wrapper.getButton().setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            // What you want
        }
    });

    return row;
}
于 2012-11-15T06:10:22.707 に答える
0

同じ行に多数のボタンがあったため、アダプターのタグを必要な位置に設定し、ボタンのタッチでタグを取得するだけになりました。

public void imageClick(View v) 
{
    int position = (Integer) v.getTag();
}

私がこのルートに行った理由は、ListActivity で必要なデータにアクセスするために、ListActivity でクリックを行う必要があったためです。

于 2012-11-15T06:20:28.130 に答える