Question

I am implementing ListView in my code. But When I click on the items, it does not respond respond to the click in any way. Could someone help me please? Thanks in advance .

Here is the code .

public class ListaActivity extends Activity {

    public final static String EXTRA_MESSAGE = "com.example.provacomunicazione.MESSAGE";
    @Override
    public void onCreate(Bundle savedInstanceState)  {
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.lsta);
        Resources res = getResources();
        String[] Authors = res.getStringArray(R.array.Lista_Nomi_E_Cognomi_Autori);
        ArrayList<String> Autori = new ArrayList<String>();
        for (String temp:Authors) {
            Autori.add(temp);
        }
        Collections.sort(Autori);
        ArrayList<String> AutoriLetteraSelezionata = new ArrayList<String>();
        for (String temp:Autori) {
            if (temp.charAt(0)=='A') {
                AutoriLetteraSelezionata.add(temp);
            }
        }
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.textviewitem, AutoriLetteraSelezionata);
        ListView listView = (ListView) findViewById(R.id.listView1);
        listView.setAdapter(adapter);
        listView.setClickable(true);
        listView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

            CharSequence autore = "("+((TextView)view).getText()+")";

            Intent i = new Intent(ListaActivity.this, SecondaryActivity.class);
            i.putExtra(EXTRA_MESSAGE, autore);
            startActivity(i);  
        });
    }
}    
Was it helpful?

Solution

You should define on all of the child objects in the item listview (TextView, ImageView etc.):

android:clickable="false"
android:focusable="false"
android:focusableInTouchMode="false"

And for the root item RelativeLayout / LinearLayout and so, define:

android:clickable="false"
android:descendantFocusability="blocksDescendants"
android:focusable="false"
android:focusableInTouchMode="false"

If you won't define those, they will "catch" the click event. And if you have a Custom listView adapter, just check that you override:

@Override
public boolean isEnabled(int position)
{
    return true;
}

OTHER TIPS

In my case a problem was in fact that a ListView contained HorizontalScrollViews.

HSV consumes clicks over items and doesn't return OnItemClick to the ListView.

I solved the problem when wrote an OnClickListener inside an adapter that returns a callback to the ListView. See here: https://stackoverflow.com/a/43653085/2914140.

In the customer Item,

set every element

android:clickable="true"
android:focusable="false"

works for me

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top