2012-01-07 59 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"); 
}