Search code examples
androidlistviewandroid-arrayadaptertoastonitemclicklistener

OnItemClickListener in Listview with image is not working


I'm beginner in android. I created my OnItemListener in ListView with Image, but when I click the list item, my app crashes.

Here my MainActivity.java

package com.listview.test.arrayadapter;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {
    ListView l1;
//    RelativeLayout r1;
    TextView t1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        l1= (ListView) findViewById(R.id.listview);
//        r1= (RelativeLayout) findViewById(R.id.activity_main);

     String[] list = {"item1","item2","item3","item4","item5","item6","item7","item8","item9","item10"};
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, R.layout.single_view , R.id.textview, list);

        l1.setAdapter(adapter);
        l1.setOnItemClickListener(this);
    }

        @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            TextView temp = (TextView) view;
            Toast.makeText(this, temp.getText() + "" + position, Toast.LENGTH_LONG).show();
    }
}

Solution

  • I think you are getting an exception because your R.layout.single_view is not a TextView and you are tring to cast it into that. Do something like this instead:

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        TextView temp = (TextView) view.findViewById(R.id.textview);
        Toast.makeText(this, temp.getText() + "" + position, Toast.LENGTH_LONG).show();
    }