Не получается событие OnItemClick объекта ListView - PullRequest
6 голосов
/ 15 марта 2011

Я использую один пользовательский просмотр списка.Когда я нажимаю на просмотр списка, я не получаю событие onClick.

Вот мой код.

        lvlList = (ListView)findViewById(R.id.lvlList);
        lvlList.setOnItemClickListener(new OnItemClickListener() 
        {
            public void onItemClick(AdapterView<?> a, View v,int position, long id) 
            {
                Toast.makeText(getBaseContext(), "Click", Toast.LENGTH_LONG).show();
            }
        });

lvlList.setAdapter(new OrderAdapter(getBaseContext()));

OrderAdapter

private class OrderAdapter extends BaseAdapter
{
    private LayoutInflater mInflater;

    public OrderAdapter(Context context) 
    {
        mInflater = LayoutInflater.from(context);
    }

    public View getView(int position, View convertView, ViewGroup parent) 
    {
        ViewHolder holder;

        if (convertView == null) 
        {
            convertView = mInflater.inflate(R.layout.example, null);
            holder = new ViewHolder();

            holder.txtTest = (TextView) convertView.findViewById(R.id.txtTest);

            convertView.setTag(holder);
        } 
        else 
        {
            holder = (ViewHolder) convertView.getTag();
        }

        holder.txtTest.setText(Util.SampleTest.get(position));
                    return convertView;
    }

    public class ViewHolder 
    {
        public TextView txtTets;
    }

    public int getCount(){return Util.SampleTest.size();}

    public Object getItem(int position){return position;}

    public long getItemId(int position){return position;}
}

Ответы [ 6 ]

19 голосов
/ 09 августа 2012

Вам нужно установить android:descendantFocusability="blocksDescendants" в вашем пользовательском XML-файле макета для LinearLayout или любого другого макета, который вы использовали. (для определения вашей пользовательской строки)

Это должно решить вашу проблему. Потому что это действительно решило мою. Если это решит, пожалуйста, отметьте мой пост как ваш ответ.

Вы также можете сослаться на комментарии здесь

5 голосов
/ 13 декабря 2011

Если в вашем списке есть интерактивные элементы, вы должны поиграть с фокусом, чтобы иметь возможность получать события, выбранные по элементам списка, И элементы списка, по которым щелкают дети.

Вызовите следующий код для элементов спискакак они созданы:

listItem.setDescendantFocusability(FOCUS_BLOCK_DESCENDANTS);

Найдено на http://code.google.com/p/android/issues/detail?id=3414, ответ # 27

3 голосов
/ 15 марта 2011
0 голосов
/ 03 января 2013

попробуйте это.

  if (convertView == null) 
    {
        convertView = mInflater.inflate(R.layout.example, null);
        holder = new ViewHolder();

        holder.txtTest = (TextView) convertView.findViewById(R.id.txtTest);
        convertView.setClickable(true);
        convertView.setOnClickListener(new OnClickListener() {          
            @Override
            public void onClick(View v) {
         }
       }

        convertView.setTag(holder);

    } 
    else 
    {
        holder = (ViewHolder) convertView.getTag();
    }

    holder.txtTest.setText(Util.SampleTest.get(position));
                return convertView;
}
0 голосов
/ 08 февраля 2012

Убедитесь, что ваш пользовательский макет не имеет CheckBox до предполагаемого TextView.Вы можете использовать ImageView для выполнения функции CheckBox.

0 голосов
/ 16 марта 2011

Сначала установите адаптер, а затем установите событие прослушивания щелчка при просмотре списка. Затем попробуйте снова.

...