-1

onItemClicklistenerカスタム リスト ビューを設定しましたが、カスタム リスト ビューのコントロールをonItemClicklistener設定focusable="false"してみましたが動作しません。focusableInTouchMode="false"関連する質問も見ましたが、助けにはなりません。

親切に助けてください

 public class SwipingActivity extends Activity {
 public OnTouchListener gestureListener;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ListView lv = (ListView)findViewById(R.id.mylistview);

        gestureListener = new View.OnTouchListener() {
            private int padding = 0;
            private int initialx = 0;
            private int currentx = 0;
            private  ViewHolder viewHolder;
            public boolean onTouch(View v, MotionEvent event) {
                if ( event.getAction() == MotionEvent.ACTION_DOWN)
                {
                    padding = 0;
                    initialx = (int) event.getX();
                    currentx = (int) event.getX();
                    viewHolder = ((ViewHolder) v.getTag());
                }
                if ( event.getAction() == MotionEvent.ACTION_MOVE)
                {
                    currentx = (int) event.getX();
                    padding = currentx - initialx;
                }

                if ( event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL)
                {
                    padding = 0;
                    initialx = 0;
                    currentx = 0;
                }

                if(viewHolder != null)
                {
                    if(padding == 0)
                    {
                        v.setBackgroundColor(0xFF000000 );
                        Toast.makeText(getApplicationContext(), viewHolder.text.getText().toString(), 5);
                    }
                    if(padding > 75)
                    {
                        viewHolder.setRunning(true,viewHolder);
                    }
                    if(padding < -75)
                    {
                        viewHolder.setRunning(false,viewHolder);
                    }
                    v.setBackgroundColor(viewHolder.getColor());  
                    v.setPadding(padding, 0,0, 0);
                }
                return true;
            }
        };

        ModelArrayAdapter adapter = new ModelArrayAdapter(this, getData(),gestureListener);
        lv.setAdapter(adapter);
        lv.setFocusable(true);
        lv.setOnTouchListener(gestureListener);
        lv.setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> arg0, View arg1,
                    int arg2, long arg3) {
                // TODO Auto-generated method stub
                TextView txt = (TextView) arg1.findViewById(R.id.TextView01);

                Toast.makeText(getApplicationContext(), txt.getText().toString(), 5);

            }
        });
    }

@samコードを追加しました。よろしければご確認ください……。

4

2 に答える 2

0

推測ですが、ListView.setOnItemClickListener() を呼び出しましたか? 私はあなたが保持し、に設定したいと考えてfocusablefocusableIntouchModeますtrue.

添加

トーストを表示するには、show() を呼び出す必要があります。これを変更します。

Toast.makeText(getApplicationContext(), txt.getText().toString(), 5);

これに:

Toast.makeText(getApplicationContext(), txt.getText().toString(), 5).show();

ここでも:

Toast.makeText(getApplicationContext(), viewHolder.text.getText().toString(), 5).show();

別の追加

OnTouchListener は、OnItemClickListener に到達する前にイベントを消費しています。単純に onTouch() return を持っていますfalse

于 2012-06-17T17:32:33.223 に答える
0

カスタムアダプタの getView メソッド内の ItemClickListener に実装してみてください。アプリケーションを実行します。正常に動作します

于 2012-06-18T05:30:25.963 に答える