2

2 つのボタンを含むカスタム リストビュー アダプターがあります。問題は、ボタンをクリックするのが難しく、フォーカスが失われ続けるか、クリックを認識する前に何度もタッチする必要があることです。

@Override
public View getView(int position, View view, final ViewGroup parent) {

    DataEntity data = entityList.get(position);

    view = inflater.inflate(R.layout.new_mission_row, parent, false);

// inflate other views


    Button playButton = (Button) view.findViewById(R.id.buttonPlay);
    playButton.setBackgroundResource(R.drawable.blue_button);
    playButton.setTextColor(Color.WHITE);
    MyClickListener listener = new MyClickListener(context,entity);
    playButton.setOnClickListener(listener);
    playButton = (Button) view.findViewById(R.id.buttonMap);
    playButton.setBackgroundResource(R.drawable.blue_button);
    playButton.setTextColor(Color.WHITE);
    playButton.setOnClickListener(listener);
    return view;
}
4

2 に答える 2

1

以下を参照してください。

@Override
    public View getView(final int position, View convertView,
            ViewGroup parent) {

        View v = convertView;
        if (v == null) {
            LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            imageLoader = new SISIImageLoader(MY_ACTIVITY.this);
            v = vi.inflate(R.layout.game_display_row, null);
            ViewHolder holder = new ViewHolder();

            holder.deleteGameBtn = (Button) v.findViewById(R.id.deleteGameBtn);


            v.setTag(holder);
        }

        final Gamedata o = items.get(position);

        ViewHolder holder = (ViewHolder) v.getTag();


        if (o != null) {

            Button deleteGameBtn = (Button) v.findViewById(R.id.deleteGameBtn);

            holder.deleteGameBtn.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {

                        // do what you want to do on click 

                    }


            });

        }
        return v;
    }

それがあなたの問題を解決することを願っています。

于 2012-11-06T10:03:58.910 に答える
1

コードを一度確認してください。の別のボタンオブジェクトを作成していませんbuttonmap

playButton = (Button) view.findViewById(R.id.buttonMap);

ここでは、作成したものと同じボタンオブジェクトを使用していますbuttonPlay

また、ListViewにデータを入力する場合は、ViewHolderパターンを使用してリストビューに効率的にデータを入力する必要があります。

于 2012-11-06T10:05:45.820 に答える