2012-06-17 1 views
-1

Я поставил onItemClicklistener на мой пользовательский список зрения, но onItemClicklistener не работает Я также попробовал множество focusable="false" и focusableInTouchMode="false" на контролей зрения пользовательского списка. Я также видел связанные вопросы, но не помогал.не onItemClicklistener работает в пользовательском списке

Пожалуйста, помогите пожалуйста

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); 

      } 
     }); 
    } 

Я @ Сэм добавил код. Просьба проверить это ....

+1

Пожалуйста, разместите соответствующий код, чтобы мы могли помочь. – Sam

ответ

0

Просто догадаться, но вы назвали ListView.setOnItemClickListener()? Я считаю, что вы хотите сохранить focusable и focusableIntouchMode установить на true.

Добавление

Вы должны вызвать шоу(), чтобы отобразить Тост, изменить:

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() возвращают false.

+0

Я попытался сфокусировать и focusableIntouchMode на true, а также вызвать ListView.setOnItemClickListener(), но не работает. Пожалуйста, помогите :( – kamil

+0

Я не могу видеть ваш код здесь, вы должны опубликовать (как минимум) код Java, касающийся вашего ListView и OnItemClickListener. – Sam

+0

любезно проверьте его. Я отправил код – kamil

0

Попробуйте реализовать элемент ItemClickListener в методе getView пользовательского адаптера. Теперь запустите приложение .it будет нормально работать

+0

вы можете объяснить с помощью кода. – kamil