обратный вызов onListItemClick не активирован - PullRequest
1 голос
/ 07 января 2012
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();}

}

У меня есть этот list_item, который расширяет список. Однако, когда я нажимаю на одну из строк, обратный вызов onListItemClick не активируется. Это почему? Мне не нужно ничего с адаптером на это право?

}

Ответы [ 3 ]

1 голос
/ 07 января 2012

Вы должны использовать следующее в всех виджетах xml, которые вы надуваете для своего пользовательского ListView.

android:focusable="false"

android:focusableInTouchMode="false"

Надеюсь, это поможет

1 голос
/ 07 января 2012

У вас нет регистрации на элементе. Щелкните на 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...");      

    }
};
0 голосов
/ 07 января 2012

Можете ли вы попробовать это

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