because I need to display something more than just a list in a Fragment.
So I choose Fragment rather than ListFragment, and my layout is something looks like
<linearlayout...>
<TextView...>...<TextView/>
<Button...>...<Button/>
<ListView android:id = "@"+id/mylist" ...></ListView>
</linearylayout>
And I implemnt “MyAdapter” extend BaseAdapter, which has getView like following
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
if(position == 0)
{
return categroyView("Team leader");
}
else if (position == 2)
{
return categroyView("Team memebers");
}
else
{
LayoutInflater inflater = context.getLayoutInflater();
View v = inflater.inflate(R.layout.row_group, null, false);
return v;
}
}
protected View categroyView(String text)
{
TextView txtView = new TextView(context);
txtView.setText(text);
return txtView;
}
It turns out that I can receive onItemClick when its position is 0 or 2 (which as you can see I dynamically generate textView.
Meanwhile I can’t receive onItemClick when its position is not 0 or 2 (which I return inflate view from XML)
I’ve seen some discussion about if customized row layout has some clickable item (like button), this situation will happen, but even my row layout has only one textView, it still failed to receive onItemClick.
p.s.
- Also, I select Fragment rather than Activity for other other design issue.
- I know I can alternatively add v.setOnClickListene in getView to help this issue, but then still the item won’t highlight if I pressed on it.
What is in the position two view? If that thing might be able to take focus sit will do it instead of the list item if you don’t want the inards to be clickabke then disable that it’s click and it will the be passed to the item
Also are these long lists? You will run into trouble if you inflate a lot