Ricardo Filipe
Ricardo Filipe

Reputation: 445

OnItemClickListener not work

I have a listview. And i need do click in each element inside listview. But the onItemClickListener don't work. I try put each textView with focusable="false" and put android:descendantFocusability="blocksDescendants" but nothing works and i don't know where is my error. Here is my code

xml of each element inside listview

  **xml_item_list**
  <TableRow xmlns:android="http://schemas.android.com/apk/res/android"
  android:paddingTop="5dip"
  android:paddingBottom="8dip"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:minHeight="?android:attr/listPreferredItemHeight"
  android:background="@android:drawable/list_selector_background"
  android:clickable="true"
  android:longClickable="true"
  android:descendantFocusability="blocksDescendants">

 <TextView
    android:id="@+id/lDate"
    android:layout_width="150dp"
    android:layout_height="wrap_content"
    android:layout_marginRight="3dp"
    android:background="@drawable/et_style"
    android:gravity="center"
    android:textColor="#c2c2c2"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:focusable="false" />

<TextView
    android:id="@+id/lDescription"
    android:layout_width="50dp"
    android:layout_height="wrap_content"
    android:layout_marginLeft="3dp"
    android:layout_marginRight="3dp"
    android:layout_weight="1"
    android:gravity="center"
    android:background="@drawable/et_style"
    android:textColor="#c2c2c2"
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:focusable="false"/>

 <TextView
    android:id="@+id/lMissValue"
    android:layout_width="300dp"
    android:layout_height="wrap_content"
    android:layout_marginLeft="3dp"
    android:gravity="center_horizontal|center"
    android:layout_gravity="center"
    android:textColor="#DDCC2EFA"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:focusable="false"/>
   </TableRow>

   **main_xml_list**

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

  <LinearLayout
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_marginBottom="50dp">

    <ImageView 
        android:id="@+id/bankTransaction"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:focusable="false"/>

    <TextView
        android:id="@+id/contextLabel"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/et_style"
        android:textSize="28dp"
        android:layout_gravity="bottom" />
 </LinearLayout>

 <ListView
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:descendantFocusability="blocksDescendants">

    </ListView>

 </LinearLayout>

Code inside onCreate() function of activity onCreate()

    listView = getListView();
    listView.setClickable(true);
    listView.setOnItemClickListener(
      new OnItemClickListener()
          {
                @Override
                public void onItemClick(AdapterView<?> arg0, View view,int position, long id) {                      
                   Log.w(TransactionView.class.getName(), "Item click listener");
                   Toast.makeText(TransactionView.this, "Item clicado", Toast.LENGTH_LONG).show();
                }   
            }       
    );

Anyone can help me? Thanks for yout time.

Upvotes: 0

Views: 356

Answers (3)

Ricardo Filipe
Ricardo Filipe

Reputation: 445

My Solution.....

  public class TransactionView extends ListActivity implements **AdapterView.OnItemClickListener**{}

 **onCreate()**{
      adapter = new SimpleCursorAdapter(
            this, 
            R.layout.transaction_item_view, 
            c, 
            new String[]{MySQLiteHelper.C_TRANSACTION_DUE, MySQLiteHelper.C_TRANSACTION_DESCRIPTION, MySQLiteHelper.C_TRANSACTION_VALUE, MySQLiteHelper.C_TRANSACTION_COVERVALUE, MySQLiteHelper.C_TRANSACTION_STATE, MySQLiteHelper.C_TRANSACTION_SOURCE}, 
            new int[]{ R.id.lDate, R.id.lDescription, R.id.lMissValue},SimpleCursorAdapter.IGNORE_ITEM_VIEW_TYPE);

   }

    setListAdapter(adapter);    
    listView = getListView();
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener()
            {
                @Override
                public void onItemClick(AdapterView<?> arg0, View view,int position, long id) {

                   Log.w(TransactionView.class.getName(), "Item click listener");
                   Toast.makeText(TransactionView.this, "Item clicado", Toast.LENGTH_LONG).show();
                }   
            } 
        );

      **item_list_row**
        <TableRow xmlns:android="http://schemas.android.com/apk/res/android"
  android:paddingTop="5dip"
  android:paddingBottom="8dip"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:minHeight="?android:attr/listPreferredItemHeight"
  android:background="@android:drawable/list_selector_background"
>

<TextView
    android:id="@+id/lDate"
    android:layout_width="150dp"
    android:layout_height="wrap_content"
    android:layout_marginRight="3dp"
    android:background="@drawable/et_style"
    android:gravity="center"
    android:textColor="#c2c2c2"
    android:textAppearance="?android:attr/textAppearanceMedium"
    />

<TextView
    android:id="@+id/lDescription"
    android:layout_width="50dp"
    android:layout_height="wrap_content"
    android:layout_marginLeft="3dp"
    android:layout_marginRight="3dp"
    android:layout_weight="1"
    android:gravity="center"
    android:background="@drawable/et_style"
    android:textColor="#c2c2c2"
    android:textAppearance="?android:attr/textAppearanceMedium" 
    />

<TextView
    android:id="@+id/lMissValue"
    android:layout_width="300dp"
    android:layout_height="wrap_content"
    android:layout_marginLeft="3dp"
    android:gravity="center_horizontal|center"
    android:layout_gravity="center"
    android:textColor="#DDCC2EFA"
    android:textAppearance="?android:attr/textAppearanceMedium"
    />

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

 <ListView
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
  </ListView>

 </LinearLayout>

Upvotes: 0

AndroidLearner
AndroidLearner

Reputation: 4636

First of all,check that you have added this line or not in your code.

public class MyActivity extends Activity implements OnItemClickListener

Then add this code in your onCreate() of activity ...

ListView listView = (ListView) findViewById(R.id.lisview);
 listView.setOnItemClickListener(this);

    @Override
    public boolean onItemClick(AdapterView<?> parent, View v, int pos,long id) 
    {
        System.out.println("~~~~~~Item Clicked");
        return false;
    }

change this ::

  android:id="@+id/list"

Hope this helps :)

Upvotes: 0

Janmejoy
Janmejoy

Reputation: 2731

try like this

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


    }
});

Upvotes: 1

Related Questions