2012-01-07 61 views
1
public class List_Items extends ListActivity{ 

private ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>(); 

    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 


     setContentView(R.layout.list_item); 

     List <ImageAndText> total_list=new ArrayList<ImageAndText>(); 

      ListView lv = (ListView) this.findViewById(android.R.id.list); 

     lv.setAdapter((ListAdapter) new ImageAndTextListAdapter(this, total_list)); 

     getListView().setTextFilterEnabled(true); 

       ////////////////////////////////////////////////////// 
     Button btn=(Button) findViewById(R.id.button_sync); 
     btn.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
    // TODO Auto-generated method stub 
Toast message=Toast.makeText(getApplicationContext(), "click the list_item", Toast.LENGTH_LONG); 
      message.show();} 
     }); 
     } 

    public void onListItemClick(ListView parent, View v, int position, long id) 
    {   
    Toast.makeText(getApplicationContext(), "You have selected " +(position+1)+"th item", 
      Toast.LENGTH_SHORT).show();} 

}onListItemClick回調沒有被激活

我有這個LIST_ITEM這是擴展了listactivity。但是,當我點擊其中一行時,onListItemClick的回調沒有被激活。這是爲什麼?我不需要任何東西在這個適配器上?

}

回答

1

你必須使用以下的您正在膨脹的XML的所有部件爲您定製的ListView 。

android:focusable="false" 

android:focusableInTouchMode="false" 

希望它可以幫助

+0

它的工作原理!你能解釋爲什麼他們需要嗎? – lilzz 2012-01-07 17:29:22

+0

@lilzz ...這是因爲在ListView的一行中具有可聚焦項目會導致OnItemClickListener或onListItemClick NOT被調用。這就是爲什麼我們必須使可以集中的虛假 – Maverick 2012-01-08 05:19:06

1

你還沒有註冊你的onItemClick與Listview。

listView.setOnItemClickListener(new OnItemClickListener() { 

     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) { 
      Log.i("List Clicked ....", "List Clicked...");   
     } 
    }); 

listView.setOnItemClickListener(listener); 
public OnItemClickListener listener = new OnItemClickListener() { 

    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
     Log.i("List Clicked ....", "List Clicked...");  

    } 
}; 
+2

我不認爲這是必需的。正如你可以看到他的類擴展了ListView,事實上他可以覆蓋public void onListItemClick。如果你正在擴展一個普通的活動,並且你在佈局 – StErMi 2012-01-07 10:21:46

+0

中有一個列表,那麼你在做什麼是必需的,所以...你沒有註冊ListClick.untill onClick,除非你不註冊它將如何被稱爲? ??? – Richa 2012-01-07 10:24:09

+0

正如我所說這不是一個正常的活動,但一個ListAcivity所以默認情況下,我認爲它已經完成綁定。 Infact它直接提供了@Override protected void onListItemClick(ListView l,View v,int position,long id) – StErMi 2012-01-07 10:58:34

0

你可以試試這個

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 
    Log.i("You clicked the list"); 
}