OnItemClickListener () в ListView не работает - PullRequest
0 голосов
/ 25 марта 2011

Это код, который я сделал, чтобы заполнить ListView SimpleCursorAdapter.Но я не могу реализовать слушатель onClick в этом коде.На самом деле код работает правильно без ошибок, но я не получаю никакого вывода при нажатии элемента ...

public class Senditems extends Activity implements OnItemClickListener
{
    TextView output;
    DataHelper dh;
    ListView empListView;

    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sendto);

        Table1 employeeTable = new Table1(this);    
        employeeTable.open();
        Cursor c = employeeTable.fetchAllEmployee();
        if (c!= null)
        {
            SimpleCursorAdapter adapter2 = new SimpleCursorAdapter(this,
                R.layout.sendto,c, 
                new String[] {c.getColumnName(1),c.getColumnName(2)}, 
                new int[] {R.id.EmployeeName, R.id.EmployeeDesignation});
            empListView = (ListView)findViewById(R.id.Employee);
            empListView.setAdapter(adapter2);
            empListView.setOnItemClickListener(new OnItemClickListener() {
                public void onItemClick(AdapterView<?> parent, View view, int position, long id)                
                {
                    Toast.makeText(getApplicationContext(), "1 item clicked ",  Toast.LENGTH_SHORT).show();
                }
            });
       }

       employeeTable.close();
    }

    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) 
    {
        // TODO Auto-generated method stub      
    }
}

Ответы [ 5 ]

3 голосов
/ 17 мая 2011

Похоже, что android:inputType может привести к этой проблеме, даже если вы используете TextView.У меня была та же проблема, и удаление атрибута android:inputType из TextView s устранило проблему.

1 голос
/ 20 февраля 2013

Привет, Варада! Я работаю с твоим кодом. Я использую твой код. Он работает нормально, после внесения следующих изменений в твой код

  1. Пожалуйста, укажите поле первичного ключа _id в таблице.
  2. и используйте этот код, он работает нормально и укажите позицию в тосте на предмет нажмите

    public class MainActivity extends Activity implements OnItemClickListener
    {
        TextView output;
        ListView empListView;
    
        @SuppressWarnings("deprecation")
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            SimpleCursorAdapter adapter2=null;
            try {
                Table1 employeeTable = new Table1(this);    
                employeeTable.open();
                try {
                     // employeeTable.insert("Ankit", "Name");
                } catch (Exception e) {
                    // TODO: handle exception
                    e.printStackTrace();
                }
    
    
    
                Cursor c = employeeTable.fetchAllEmployee();
                if (c!= null)
                {
                     adapter2 = new SimpleCursorAdapter(this,
                        R.layout.sendto,c, 
                        new String[] {c.getColumnName(1),c.getColumnName(2)}, 
                        new int[] {R.id.EmployeeName, R.id.EmployeeDesignation});
    
               }
    
    
    
               employeeTable.close();
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
    
            }
            empListView = (ListView)findViewById(R.id.Employee);
            empListView.setAdapter(adapter2);
            empListView.setOnItemClickListener(new OnItemClickListener() {
                public void onItemClick(AdapterView<?> parent, View view, int position, long id)                
                {
                    Toast.makeText(getApplicationContext(), "position"+position,  Toast.LENGTH_SHORT).show();
                }
            });
        }
    
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) 
        {
            // TODO Auto-generated method stub      
        }
    }``
    

    3-sendto.xml

    <TextView
        android:id="@+id/EmployeeName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />
    
    <TextView
        android:id="@+id/EmployeeDesignation"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />
    

0 голосов
/ 20 февраля 2013

Это происходит, когда фактическое представление не фокусируется из-за просмотра других в вашем файле строки, проверьте, что я уже ответил здесь , может быть, это помогает.

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

Если вы реализуете OnItemClickListener и onItemClick генерируется автоматически, вы должны написать действия внутри него:

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    // TODO Auto-generated method stub
    if (view.equals(empListView))
    {
        Toast.makeText(getApplicationContext(),"1 item clicked ", Toast.LENGTH_SHORT).show();
    }  
}

, а также включить empListView.setOnItemClickListener(this);

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

Я тоже сталкивался с такой же проблемой.Я изменил его на OnClickListner.

rowView.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        //give ur code here
    }
});

здесь rowView соответствует строке в ListView.

...