I am making a drawer having ListView
in it. But surprisingly its not getting any onClickListener
fired when I click on any list item.
I have tried these things till now
- Making a
ArrayAdapter
forListView
and get simplylist.onItemClickListener
andlist.onClickListener
too. - A custom adapter with a implemented
OnClickListener
Also for layouts even, I have tried these ways
- A layout with a parent
TextView
- Layout with
RelativeLayout
as parent
Trying each case from above, I got nothing working till now. I guess that code is working well but might be some issue with layout, but trying everything I am still clueless.
Here is my current item layout
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:descendantFocusability="blocksDescendants">
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/image"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/image"
android:text="@string/app_label"
android:paddingTop="14dp"
android:textAppearance="?android:attr/textAppearanceMedium" />
<ImageView
android:contentDescription="@string/app_label"
android:id="@+id/image"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:padding="10dp"
android:src="@drawable/thumb" />
</RelativeLayout>
Here is my Custom Adapter
/****** Depends upon data size called for each row , Create each ListView row *****/
@SuppressLint("SimpleDateFormat")
public View getView(final int position, View convertView, ViewGroup parent) {
View vi = convertView;
final ViewHolder holder;
if (convertView == null) {
/****** Inflate tabitem.xml file for each row ( Defined below ) *******/
vi = inflater.inflate(R.layout.drawer_list_item, null);
/****** View Holder Object to contain tabitem.xml file elements ******/
holder = new ViewHolder();
holder.text = (TextView) vi.findViewById(R.id.text);
holder.image = (ImageView) vi.findViewById(R.id.image);
/************ Set holder with LayoutInflater ************/
vi.setTag(holder);
} else {
holder = (ViewHolder) vi.getTag();
}
if (data.size() <= 0) {
holder.text.setText("No Music Found!");
} else {
tempValues = null;
tempValues = (ListModel) data.get(position);
String txt = tempValues.getCompanyName().toString();
holder.text.setText(txt);
vi.setOnClickListener(new OnItemClickListener(position));
// Set Values and listeners her
}
return vi;
}
/********* Called when Item click in ListView ************/
private class OnItemClickListener implements OnClickListener {
private int mPosition;
OnItemClickListener(int position) {
mPosition = position;
}
@Override
public void onClick(View arg0) {
Toast.makeText(activity, "rgrg", Toast.LENGTH_SHORT).show();
HomeActivity sct = (HomeActivity) activity;
sct.onDrawerItemClick(mPosition);
}
}
@Override
public void onClick(View arg0) {
// Default onClick
Toast.makeText(activity, "rgrg", Toast.LENGTH_SHORT).show();
}
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Log.i("Long", "msg");
return true;
}
And here is my activity
mPlanetTitles = getResources().getStringArray(R.array.planets);
mDrawerList = (ListView) findViewById(R.id.left_drawer);
// Set the adapter for the list view
setListData();
DrawerAdapter adapter = new DrawerAdapter(this,
CustomListViewValuesArr, getResources());
mDrawerList.setAdapter(adapter);
mDrawerList.setClickable(true);
Here is a listener in activity even
public void onDrawerItemClick(int mPosition) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "fgsg", Toast.LENGTH_SHORT).show();
}
I am getting no Log and no Toast which shows that nothing is clicked. After trying a lot, decided to get some help from you guys!
EDIT
I have did some further look up to see what happening and put a button
in listview
. In drawer the button is not even getting onPressed
colors and hovers on pressing it. At all, the layout is very unresponsive or like not giving any feedback.