0

I have LinearLayouts acting as a listView I want to add onClickListener on the rows of the list. The code is inside a fragment.

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    for (int i = 0; i < promos.size(); i++) {
        View rowView = inflater.inflate(R.layout.list_item, lv, false);
        holder = new NewsHolder();
        news = (News) promos.get(i);
        holder.title = (TextView) rowView.findViewById(R.id.title);
        holder.title.setText(news.title);
        holder.excerpt.setText(news.excerpt);
        lv.addView(rowView);
        rowView.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Toast.makeText(getActivity(),"clicked item"+news.id,Toast.LENGTH_LONG).show();
            }
        });

    }
    mainL.addView(linear);
    return mainL;
}
Mark Samy
  • 148
  • 10

3 Answers3

0

You need to add the rowView inside your Linearlayout after defining onclicklistner like this,

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

for (int i = 0; i < promos.size(); i++) {
    View rowView = inflater.inflate(R.layout.list_item, lv, false);
    holder = new NewsHolder();
    news = (News) promos.get(i);
    holder.title = (TextView) rowView.findViewById(R.id.title);
    holder.title.setText(news.title);
    holder.excerpt.setText(news.excerpt);

    rowView.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Toast.makeText(getActivity(),"clicked item"+news.id,Toast.LENGTH_LONG).show();
        }
    });
    lv.addView(rowView);

}
mainL.addView(linear);
return mainL;
}
Sahil Garg
  • 263
  • 1
  • 20
0

Added android:clickable="true" to the list_item.xml.

Mark Samy
  • 148
  • 10
-4

Looks like you searching for solution like in this topic. Read here ListView with OnItemClickListener android