Android, как определить, какая таблица была нажата
В моем макете фрагмента у меня есть следующая таблица:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TableLayout
android:id="@+id/tableLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</TableLayout>
</LinearLayout>
В этой таблице я программно добавляю несколько таблиц с таким представлением внутри:
for(int i = 0; i < 5;){
tableLayout.addView(createTableRow((LocationObject)objectList.get(i)), i);
}
-
private View createTableRow(LocationObject locObject) {
TableRow tr = new TableRow(getActivity());
View v = LayoutInflater.from(getActivity()).inflate(R.layout.view_layout, tr, false);
TextView textViewName = (TextView) v.findViewById(R.id.textView_name);
textViewName.setText(locObject.getTitle());
TextView textViewProvider = (TextView) v.findViewById(R.id.textView_provider);
textViewProvider.setText(locObject.getSubTitle());
return v;
}
После того, как я несколько раз вызвал метод createTableRow и заполнил таблицу разметкой строк, я хочу определить, когда пользователь щелкает строку. Как я могу дать строке разные идентификаторы, например, первый получает идентификатор 0, второй 1 и т. Д. И, наконец, как я могу определить, когда пользователь щелкает строку?
РЕДАКТИРОВАТЬ: я пытался установить setOnClickListener, но он не работает, когда я нажимаю на представление, сообщение "достижимо" никогда не отображается в logcat.
private View createTableRow(LocationObject locObject) {
TableRow tr = new TableRow(getActivity());
View v = LayoutInflater.from(getActivity()).inflate(R.layout.view_layout, tr, false);
...
v.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Log.e("output", "is reachable");
}
});
return v;
}
1 ответ
Прежде всего не забудьте i++
в for(int i = 0; i < 5; i++)
Вы можете попробовать что-то вроде:
private View createTableRow(int position) {
//instead
//TableRow tr = new TableRow(MainActivity.this);
//View v = LayoutInflater.from(MainActivity.this).inflate(R.layout.view_layout, tr, false);
//try
View v = LayoutInflater.from(MainActivity.this).inflate(R.layout.view_layout, null, false);
TextView textViewName = (TextView) v.findViewById(R.id.textView_name);
textViewName.setText("row "+ position);
v.setTag(position);
v.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
int position = (Integer) v.getTag();
Log.e("output", "is reachable at position "+ position);
}
});
return v;
}
вывод по клику:
02-04 09:36:13.615 4755-4755/noambaroz.testapplication E/output﹕ is reachable at position 0
02-04 09:36:14.680 4755-4755/noambaroz.testapplication E/output﹕ is reachable at position 2
02-04 09:36:15.310 4755-4755/noambaroz.testapplication E/output﹕ is reachable at position 4