Пользовательский список не отвечает на событие нажатия
Как вы могли догадаться, все загружается нормально, никакое событие щелчка не срабатывает. Перед тем, как начать, я прочитал очень много веток об этом, однако я за всю свою жизнь не могу этого понять. Вот код
activity_main.xml (основной макет для вызова списка)
list_mainsegments_row.xml (Пользовательская строка)
MyAdapter.java
public class MyAdapter extends ArrayAdapter {
public MyAdapter(Context context, int resource, int textViewResourceId,
String[] strings) {
super(context, resource, textViewResourceId, strings);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(getContext());
// This is a single row
View row = inflater.inflate(R.layout.list_mainsegments_row, parent,
false);
String[] items = getContext().getResources().getStringArray(
R.array.segments_main);
ImageView iv = (ImageView) row.findViewById(R.id.iconView);
TextView tv = (TextView) row.findViewById(R.id.titleMainSegments);
tv.setText(items[position]);
organiseLayout(position, items, iv);
return row;
}
private void organiseLayout(int position, String[] items, ImageView iv) {
if (items[position].equals(getContext().getResources().getString(
R.string.segment_one))) {
iv.setImageResource(R.drawable.img1);
}
if (items[position].equals(getContext().getResources().getString(
R.string.segment_two))) {
iv.setImageResource(R.drawable.img2);
}
}
}
MainActivity.java
public class MainActivity extends ListActivity implements OnItemClickListener {
private MyAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAdapter = new MyAdapter(this, android.R.layout.simple_list_item_1,
R.id.titleMainSegments, getResources().getStringArray(
R.array.segments_main));
setListAdapter(mAdapter);
getListView().setOnItemClickListener(this);
}
public void onItemClick(AdapterView parent, View view,
int position, long id) {
CharSequence text = "Item clicked";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(this, text, duration);
toast.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL,
duration, duration);
toast.show();
} }
Там нет ошибки, поэтому журнал logCat не будет полезен. Все идет хорошо, но тост не отображается при нажатии ListView.
Редактировать:
style.xml:
wrap_content
wrap_content
center_horizontal
fill_parent
fill_parent
vertical
@dimen/generalPadding
@dimen/generalPadding
@dimen/generalPadding
@dimen/tendpPadding
wrap_content
wrap_content
@dimen/tendpPadding
#000
@dimen/generalHeadingTextSize
bold
wrap_content
wrap_content
wrap_content
wrap_content
#000
@dimen/generalSmallFontSize
wrap_content
wrap_content
@dimen/tendpPadding
" @drawable/mainlogo
wrap_content
40dp
center_horizontal
@dimen/generalVerySmallFontSize
@dimen/generalPadding
@dimen/generalPadding
250dp
50dp
center_horizontal
10
@dimen/generalSmallFontSize
#CCCCCC
#000000
12dip
bold
16sp
themes.xml
@style/windowTitleBackgroundStyle
@style/windowTitleStyle
50dip
#F8C845
#555