onListItemClick is not working for listview?

Jin picture Jin · Mar 19, 2012 · Viewed 13k times · Source

Hi onListItemClick for listview is not working. Here i am fetching datas from SQLite using AsyncTask and displaying it in a list view. And i wants to do some actions when a list in a listview has clicked. But the click is not happening. I had tried a lot for this. Please help me. Here is my code

    package com.applexus.app.mobilesalesorder;

import java.util.ArrayList;
import java.util.Map;
import java.util.TreeMap;

import com.applexus.app.library.sql.SqlConnector;

import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.inputmethod.EditorInfo;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;

public class SoldToPartiesList extends ListActivity {
    private ArrayList<String> data = new ArrayList<String>();
    private ArrayList<String> idk = new ArrayList<String>();
    private ArrayList<String> name1 = new ArrayList<String>();
    private ArrayList<String> inco1 = new ArrayList<String>();
    private ArrayList<String> email = new ArrayList<String>();
    private ArrayList<String> tel = new ArrayList<String>();
    private ArrayList<String> vwerk = new ArrayList<String>();
    private SharedPreferences prefs;
    private String prefNamesalesorgid = "salesorgid";
    private String prefNamedistchnlid = "distchnlid";
    private String prefNamedivid = "divid";
    private String prefName = "mso";
    private TextView titlename;

    private static class ViewHolder {
        TextView tvlist;
        TextView tvlistsmall;
    }

    private class EfficientAdapter extends BaseAdapter {

        private Context context;
        LayoutInflater inflater;

        public EfficientAdapter(Context context) {
            // TODO Auto-generated constructor stub
            this.context = context;
            inflater = LayoutInflater.from(context);

        }

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return data.size();
        }

        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return position;
        }

        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            ViewHolder holder;
            final int place = position;

            if (convertView == null) {
                convertView = inflater.inflate(R.layout.listso, null);              
                holder = new ViewHolder();
                holder.tvlist = (TextView) convertView
                        .findViewById(R.id.textViewlist);
                holder.tvlistsmall = (TextView) convertView
                        .findViewById(R.id.textView1);          
                convertView.setTag(holder); 
//              
            } else {
                holder = (ViewHolder) convertView.getTag();
            }
            holder.tvlist.setText(idk.get(position));
            holder.tvlistsmall.setText(data.get(position));

            return convertView;
        }


    }

    Map<String, String> map = new TreeMap<String, String>();
    SqlConnector con;
    String salorg;
    String distch;
    String division;
    Context co = this;
    Boolean searchable=false;
    TextView tvmc;
    TextView tvmn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.materiallist);
        titlename = (TextView) findViewById(R.id.textViewtitle);
        titlename.setText(R.string.soldtoparties);
        tvmc=(TextView)findViewById(R.id.textViewmc);
        tvmn=(TextView)findViewById(R.id.textViewmn);
        prefs = getSharedPreferences(prefName, MODE_PRIVATE);
        salorg = (prefs.getString(prefNamesalesorgid, ""));
        distch = (prefs.getString(prefNamedistchnlid, ""));
        division=(prefs.getString(prefNamedivid, ""));
        DownloadWebPageTask task = new DownloadWebPageTask();
        task.execute(new String[] { null });

//      ListView lv=(ListView)findViewById(android.R.id.list);
//      lv.setOnItemSelectedListener(new )
    }

    EditText es;
    LinearLayout ls;
    LinearLayout mc;
    LinearLayout mn;
    Boolean searchFlag = false;
    String search;

    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();

        es = (EditText) findViewById(R.id.editTextSearch);
        ls = (LinearLayout) findViewById(R.id.linearLayoutsearch);

    }

    private class DownloadWebPageTasksearch extends
            AsyncTask<String, Void, String> {
        Cursor c;
        ProgressBar pb;

        @Override
        protected String doInBackground(String... urls) {
            con = new SqlConnector(co);
            try {
                if (searchFlag) {
                    c = con.select("select Kunnr,Name,Name1,Inco1,Vwerk,SmtpAddr,Telf1 from tb_soldtoparties where salesorg='"
                            + salorg + "' and channel='" + distch + "' and Name like '%"+search+"%' and division='"+division+"';");

                } else {
                    c = con.select("select Kunnr,Name,Name1,Inco1,Vwerk,SmtpAddr,Telf1 from tb_soldtoparties where salesorg='"
                            + salorg + "' and channel='" + distch + "' and Kunnr like '%"+search+"%' and division='"+division+"';");

                }
            } catch (Exception e) {

                e.printStackTrace();
            }

            int in = c.getCount();
            c.moveToFirst();
            for (int i = 0; i < in; i++) {

                idk.add(c.getString(0));
                data.add(c.getString(1));
                name1.add(c.getString(2));
                inco1.add(c.getString(3));
                vwerk.add(c.getString(4));
                email.add(c.getString(5));
                tel.add(c.getString(6));
                c.moveToNext();
            }
            return null;
        }

        @Override
        protected void onPostExecute(String result) {

            setListAdapter(new EfficientAdapter(SoldToPartiesList.this));
            pb = (ProgressBar) findViewById(R.id.progressBar1);
            pb.setVisibility(View.INVISIBLE);
            searchable=true;
            con.close();
        }

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            idk.clear();
            data.clear();
            name1.clear();
            inco1.clear();
            vwerk.clear();
            email.clear();
            tel.clear();
            setListAdapter(new EfficientAdapter(SoldToPartiesList.this));
            pb = (ProgressBar) findViewById(R.id.progressBar1);
            pb.setVisibility(View.VISIBLE);
            searchable=false;
        }
    }

    private class DownloadWebPageTask extends AsyncTask<String, Void, String> {
        Cursor c;
        ProgressBar pb;

        @Override
        protected String doInBackground(String... urls) {
            con = new SqlConnector(co);
            try {
                c = con.select("select Kunnr,Name,Name1,Inco1,Vwerk,SmtpAddr,Telf1 from tb_soldtoparties where salesorg='"
                        + salorg + "' and channel='" + distch + "' and division='"+division+"';");

            } catch (Exception e) {

                e.printStackTrace();
            }

            int in = c.getCount();
            c.moveToFirst();
            Log.d("size", "" + in + "");
            for (int i = 0; i < in; i++) {

                idk.add(c.getString(0));
                data.add(c.getString(1));
                name1.add(c.getString(2));
                inco1.add(c.getString(3));
                vwerk.add(c.getString(4));
                email.add(c.getString(5));
                tel.add(c.getString(6));
                c.moveToNext();
            }
            return null;
        }

        @Override
        protected void onPostExecute(String result) {

            setListAdapter(new EfficientAdapter(SoldToPartiesList.this));
            pb = (ProgressBar) findViewById(R.id.progressBar1);
            pb.setVisibility(View.INVISIBLE);
            searchable=true;
            con.close();


        }

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            idk.clear();
            data.clear();
            name1.clear();
            inco1.clear();
            vwerk.clear();
            email.clear();
            tel.clear();
            pb = (ProgressBar) findViewById(R.id.progressBar1);
            pb.setVisibility(View.VISIBLE);
            searchable=false;
        }
    }


//  class ClickOnList implements OnItemClickListener
//    {
//        @Override
//        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
//                long arg3) {
//            Log.d("ListView", "Position"+arg2);
//
//        }
//
//    }


//  public OnItemClickListener theListListener = new OnItemClickListener() {
//   
//  public void onItemClick(android.widget.AdapterView<?> parent, View v, int position, long id) { 
//      Log.d("position",position+"");
//  } };


    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);

        int place=position;
        Log.d("position",position+"");

    }
}

And Layout code is materiallist.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/bluebg"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/bar1"
        android:gravity="center_vertical"
        android:minHeight="50dp"
        android:orientation="horizontal" >

        <LinearLayout
            android:id="@+id/linearLayout2"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_margin="5dp"
            android:layout_weight="1"
            android:gravity="center_vertical|left" >

            <TextView
                android:id="@+id/textViewtitle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="5dp"
                android:shadowColor="#000000"
                android:shadowDx="1"
                android:shadowDy="1"
                android:shadowRadius="1.5"
                android:text="@string/materials"
                android:textAppearance="?android:attr/textAppearanceLarge" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/linearLayout3"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_margin="5dp"
            android:gravity="center" >

            <ProgressBar
                android:id="@+id/progressBar1"
                style="?android:attr/progressBarStyleSmall"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:visibility="visible" />
        </LinearLayout>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/linearLayout2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <LinearLayout
            android:id="@+id/linearLayout3"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >

            <LinearLayout
                android:id="@+id/linearLayout4"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:gravity="center" >

                <EditText
                    android:id="@+id/editTextSearch"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_margin="5dp"
                    android:layout_weight="1"
                    android:hint="@string/search"
                    android:imeOptions="actionDone"
                    android:inputType="textUri" >

                </EditText>
            </LinearLayout>

            <LinearLayout
                android:id="@+id/linearLayoutsearch"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:gravity="center" android:clickable="true">

                <ImageView
                    android:id="@+id/imageView1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_margin="5dp"
                    android:src="@drawable/search" />
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/linearLayout6"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <LinearLayout
            android:id="@+id/linearLayout7"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/listbg2" >


            <LinearLayout
                android:id="@+id/linearLayoutmc"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:background="@drawable/lbg1"
                android:gravity="center" >


                <TextView
                    android:id="@+id/textViewmc"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="5dp"
                    android:text="Code"
                    android:textColor="@color/black" />

            </LinearLayout>

            <LinearLayout
                android:id="@+id/linearLayoutmn"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:background="@drawable/lbg2"
                android:gravity="center" >




                <TextView
                    android:id="@+id/textViewmn"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="5dp"
                    android:text="Name"
                    android:textColor="@color/black" />

            </LinearLayout>
        </LinearLayout>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/linearLayout10"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <ListView
            android:id="@android:id/list"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:divider="@color/offwhite" >
        </ListView>
    </LinearLayout>

</LinearLayout>

And listso3.xml is

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/lbg"
        android:orientation="vertical" 
        >

        <TextView
            android:id="@+id/textViewNamelist3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:textColor="@color/black" 
            android:focusable="false"/>

        <TextView
            android:id="@+id/textViewKunn2list3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="5dp"
            android:layout_marginLeft="5dp"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:textColor="@color/black" 
            android:focusable="false"/>
    </LinearLayout>

Answer

dreamtale picture dreamtale · Mar 19, 2012

Add below code to your TextView in the XML

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

and try again.

Another simple solution: add android:descendantFocusability="blocksDescendants" to the root viewgroup.