2014-10-15 2 views
0

Я пробовал различные решения, упомянутые в SO, но все же моя проблема не устранена. Упомянутый ниже код.ListView - setOnItemLongClickListener не получает вызов

Example.java

package com.android.Example; 

import java.util.Collections; 
import java.util.List; 

import com.android.Example.db.Tbl_example_Title_DAO; 
import com.Example.database.handler.example_Titles; 
import com.android.Example.adapter.ArrayListAdapter; 

import android.app.Activity; 
import android.app.ListActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemLongClickListener; 
import android.widget.ListView; 

public class Example extends Activity { 
    Tbl_example_Title_DAO tbl_example_title; 
    example_Titles example_Titles; 
    ListView lvlist; 
    List<String> exampleTitlesList; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.listview_singleitems_list); 

     lvlist = (ListView)findViewById(R.id.list); 
     tbl_example_title = new Tbl_example_Title_DAO(this); 

     lvlist.setClickable(true); 

     lvlist.setLongClickable(true); 

     lvlist.setOnItemLongClickListener(new OnItemLongClickListener() { 

      @Override 
      public boolean onItemLongClick(AdapterView<?> arg0, View arg1, 
        int arg2, long arg3) { 
       // TODO Auto-generated method stub 
       String s=exampleTitlesList.get(arg2); 
       Log.w("HHHHHHHHHHHHHH", s); 
       return true; 
      } 
     }); 



     showlist(); 
    } 


    private void showlist() { 
     example_Titles = new example_Titles(); 
     example_Titles.setexample("E"); 

     //List<example_Titles> exampleTitlesList = tbl_example_title.getTbl_example_Detailss(example_Titles); 
     exampleTitlesList = tbl_example_title.getTbl_example_Details_str("E"); 
     Collections.sort(exampleTitlesList); 

     ArrayListAdapter arrayAdapter = new ArrayListAdapter(Example.this, exampleTitlesList); 
     lvlist.setAdapter(arrayAdapter); 
     arrayAdapter.notifyDataSetChanged(); 

    } 



} 

listview_singleitems_list.xml файл

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    > 

    <ListView 
     android:id="@+id/list" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:divider="@color/transparent" 
     android:dividerHeight="10dp" 
     android:drawSelectorOnTop="true" 
     android:footerDividersEnabled="false" 
     android:padding="10dp" 
     android:scrollbarStyle="outsideOverlay" /> 

</RelativeLayout> 

Каждая строка ListView - amc.xml

<?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:orientation="horizontal" 
    android:id="@+id/lvi"  
    android:descendantFocusability="blocksDescendants" 
    > 
    <TextView 
     android:id="@+id/tvCategory_listItem" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="5dp"/> 
</LinearLayout> 

данные становятся заселены, но не реагируют на любой нажмите события.

Просьба помочь мне понять, чего мне не хватает в коде. Thanks

Обновление 1 - Попытался добавить метод ниже. Но не получилось.

lvlist.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, final View view, 
      int position, long id) { 
     final String item = (String) parent.getItemAtPosition(position); 
     Log.w("HHHHHHHHHHHHHH", item); 


     } 

    }); 

Update 2 - Я пытался использовать приведенный ниже код и теперь OnClick работает fine.So, вопрос с пути я создал файл amc.xml только. Если кто-нибудь знает, что это вопрос, пожалуйста, дайте мне знать

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, android.R.id.text1, categoryTitlesList); 

     lvlist.setAdapter(adapter); 
     adapter.notifyDataSetChanged(); 

вместо

ArrayListAdapter arrayAdapter = new ArrayListAdapter(ExpenseCategoryList.this, categoryTitlesList); 
lvlist.setAdapter(arrayAdapter); 
arrayAdapter.notifyDataSetChanged(); 

ответ

1

избавиться от этих кодов ..

lvlist.setClickable(true); 

lvlist.setLongClickable(true); 

ListView отвечает нажмём и длинным нажатием события .. поэтому я мог бы сказать, что это группа просмотра. , но когда вы указываете listview для ответа на события кликов, как вы это делали, вы сообщаете listview, который представляет собой представление для ответа на c облизывают события не его ребенок ..

и если вы посмотрите на код его

setOnItemLongClickListener or setOnItemClickListener respectively 

не

setOnClickListener or setOnLongClickListener 

так проверить его и дайте мне знать, если это помогает

+0

я пытался. Это не сработало. – Prem

+0

после очистки и перезагрузки eclipse – Elltz

+0

Пробовал чистить, строить и перезапускать. Не работал. – Prem

Смежные вопросы