2013-06-22 3 views
0

У меня есть ListView с BaseAdapter, его товаров нет LinearLayout. Внутри LinearLayout есть TextView и RadioGroup.Android: есть ли способ узнать, какой вид нажимал

Я написал OnItemClickListener для просмотра списка просмотра. Однако, когда я щелкнул элемент внутри ListView. Ничего отклика!

Я хочу знать, как я могу узнать, какой вид клика был нажат. Есть ли какой-либо метод, например, Log.setShowClickingView(true)?

+1

Пожалуйста, разместите здесь свой код, чтобы мы могли вам помочь. – Cata

+0

обратитесь [эта ссылка] (http://www.mkyong.com/android/android-listview-example/). Это поможет вам в правильном направлении. – CRUSADER

ответ

2

Прежде всего, необходимо иметь событие в вашей Xml, что это что-то вроде этого

android:onClick="myCheckMethod" 

Помните, что вы должны объявить/написать это заявление для вашей кнопки и кнопки радио.

Теперь в файле Java (класс) объявить метод и сопоставить его с мнением, и вы будете знать, какой вид был щелкнули

public void myCheckMethod(View v) { 
    // does something very interesting 

    String Caller = ""; 
    if (R.id.DI == v.getId()) { 
     Caller = "DI"; 
    } else if (R.id.btnExp == v.getId()) { 
     Caller = "Exp"; 
    } 
    Log.i(Tag,"View Clicked was:"+Caller); 
} 

Редактировать Пользователь запрашиваемых знать, как знать ID

getResources().getResourceEntryName(int resid); 

или

getResources().getResourceName(int resid); 

Вы» Предпочитаю первый, я думаю.

+0

Большое вам спасибо, это может сработать. : D Следующая проблема теперь, мне нужно добавить onclick для каждого вида в xml-файле. :( – user2511393

+0

Ya довольно много. Только на котором вам нужно onClick Event – MDMalik

+0

Я нашел ошибку. Я нашел эту ошибку setOnClickListener с toast.makeText внутри каждого взгляда. Реальная проблема: я не знаю, какое представление отвечает за клик. Еще раз спасибо: D – user2511393

1

При использовании OnItemClickListener, одна из вещей, возвращаемых положение внутри ListView элемента, к которому была нажата:

listView1.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, 
       long id) { 

      Toast.makeText(getBaseContext(), "Item clicked: " + position, Toast.LENGTH_LONG).show(); 

     } 
    }); 

В приведенном выше примере, «INT позиция» представляет собой элемент, который был щелкнули. Сообщение с тостом отображается с индексом элемента, который был нажат.

+0

Собственно, я уже написал это. Вместо Toast.makeText я написал Log.d («click», «ListView click»); но ничего не произошло в LogCat. Спасибо за ответ, так или иначе. :) – user2511393