0

I have a problem when I try to show some data in a layout from an Adapter.

I have a Class where I have some data and a listView, but when I try to change the information of the layout from the ListView adapter, the data doesn't show in the screen, I only see the default layout, but not the real data.

I have this in my adapter:

holderExpanded = new SwipeExpandedHolder();
holderExpanded.number = (TextView) firstLayout.findViewById(R.id.tv_NumberExpanded);
holderExpanded.businessName = (TextView) firstLayout.findViewById(R.id.tv_BusinessNameExpanded);
holderExpanded.number.setText(arrayBusinesses.get(0).getNumber());
holderExpanded.businessName.setText(arrayBusinesses.get(0).getBusinessName());

And the call from my class is:

wipeLayoutListAdapter = new SwipeLayoutListAdapter(this, R.layout.show_multi_ticket_first_item, R.layout.show_multi_ticket_item,  listView, array);

How you can see, I pass 2 layouts, because I have a LinearLayout with data and the second is the item layout of the ListView.

I debug the app and I can see the correct data in the "expressions", but not in the layout.

EDIT: My Adapter

    public class SwipeLayoutListAdapter extends BaseSwipeAdapter implements OnTouchListener, OnItemClickListener
{
    private Context             context;
    private SwipeExpandedHolder holderExpanded;
    private SwipeListViewHolder holderListView;
    private ListView            listView;
    private int                 firstLayout, layout;
    private LayoutInflater      inflater;
    private ArrayList<MultiTicketBusiness> arrayBusinesses;

....

@Override
    public View generateView(int position, ViewGroup parent) {
        View v;
        SwipeLayout swipeLayout;
        if(arrayBusinesses.get(position).isEmpty()){
            v = inflater.inflate(R.layout.show_multi_ticket_empty_item, null);
            //swipeLayout = (SwipeLayout)v.findViewById(getSwipeLayoutResourceId(position));
        } else {
            v = inflater.inflate(layout, null);
            swipeLayout = (SwipeLayout)v.findViewById(getSwipeLayoutResourceId(position));
            swipeLayout.addSwipeListener(new SimpleSwipeListener() {
                @Override
                public void onOpen(SwipeLayout layout) {
                    YoYo.with(Techniques.Tada).duration(500).delay(100).playOn(layout.findViewById(R.id.trash));
                }
            });
        }

return v;
}

@Override
    public void fillValues(final int position, View convertView) {

        if(arrayBusinesses.get(position).isEmpty()){
            convertView = inflater.inflate(R.layout.show_multi_ticket_empty_item, null);
            initializeListViewHolder(convertView, position, 0);

        } else {
            //Hide the first element in the list
            //if(arrayBusinesses.get(position).isHide()){
            if(position == 0){
                hideItem(convertView, true);

            } else {
                View firstView = inflater.inflate(firstLayout, null);
                hideItem(convertView, false);
                initializeListViewHolder(convertView, position, 1);
                initializeExpandedHolder(convertView, firstView);
            }
        }
    }

public void initializeExpandedHolder(View convertView, View firstLayout){

        firstLayout = inflater.inflate(R.layout.show_multi_ticket_first_item, null);

        holderExpanded = new SwipeExpandedHolder();
        holderExpanded.number_       = (TextView)    firstLayout.findViewById(R.id.tv_NumberExpanded);
        holderExpanded.businessName_  = (TextView)   firstLayout.findViewById(R.id.tv_BusinessNameExpanded);
        holderExpanded.queueName_    = (TextView)    firstLayout.findViewById(R.id.tv_QueueNameExpanded);
        holderExpanded.peopleInFront_ = (TextView)   firstLayout.findViewById(R.id.tv_PeopleInFrontExpanded);
        holderExpanded.estimateTime_     = (TextView)    firstLayout.findViewById(R.id.tv_EstimateTimeExpanded);
        holderExpanded.removeTurn    = (ImageButton) firstLayout.findViewById(R.id.ib_TrashExpanded);

        holderExpanded.number_.setText(arrayBusinesses.get(0).getNumber());
        holderExpanded.businessName_.setText(arrayBusinesses.get(0).getBusinessName());
        holderExpanded.queueName_.setText(arrayBusinesses.get(0).getQueueName());
        holderExpanded.peopleInFront_.setText(arrayBusinesses.get(0).getPeopleInFront());
        holderExpanded.estimateTime_.setText(arrayBusinesses.get(0).getEstimateTime());

    }

    public void initializeListViewHolder(View convertView, final int position, int opc){
        holderListView = new SwipeListViewHolder();

        if(opc == 0){   //When the row doesn't have turn assigned yet.
            holderListView.layoutAddTurn = (LinearLayout)convertView.findViewById(R.id.layout_AddTurn);
        } else {        //The row show a Turn
            holderListView.number        = (TextView)    convertView.findViewById(R.id.tv_NumberItem);
            holderListView.businessName  = (TextView)    convertView.findViewById(R.id.tv_BusinessNameItem);
            holderListView.queueName     = (TextView)    convertView.findViewById(R.id.tv_QueueNameItem);
            holderListView.peopleInFront = (TextView)    convertView.findViewById(R.id.tv_PeopleInFrontItem);
            holderListView.estimateTime  = (TextView)    convertView.findViewById(R.id.tv_EstimateTimeItem);
            holderListView.removeTurn    = (ImageButton) convertView.findViewById(R.id.ib_TrashItem);

            holderListView.number.setText(arrayBusinesses.get(position).getNumber());
            holderListView.businessName.setText(arrayBusinesses.get(position).getBusinessName());
            holderListView.queueName.setText(arrayBusinesses.get(position).getQueueName());
            holderListView.peopleInFront.setText(arrayBusinesses.get(position).getPeopleInFront());
            holderListView.estimateTime.setText(arrayBusinesses.get(position).getEstimateTime());

            //Remove turn of the item clicked
            holderListView.removeTurn.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    ////Open the remove layout when click on the imageButton
                    ((SwipeLayout)(listView.getChildAt(position - listView.getFirstVisiblePosition()))).open(true);
                }
            });
        }
        convertView.setTag(holderListView);
    }

What's the problem?

Thanks in advance ;-)

Adae Rodríguez
  • 183
  • 1
  • 18

1 Answers1

0

I got the solution thanks to https://stackoverflow.com/a/21146009/3737032

View rootView = ((Activity)context).getWindow().getDecorView().findViewById(android.R.id.content);

And then:

TextView businessName  = (TextView)    rootView.findViewById(R.id.tv_BusinessNameExpanded);
TextView queueName     = (TextView)    rootView.findViewById(R.id.tv_QueueNameExpanded);
TextView number        = (TextView)    rootView.findViewById(R.id.tv_NumberExpanded);
TextView peopleInFront = (TextView)    rootView.findViewById(R.id.tv_PeopleInFrontExpanded);
TextView estimateTime  = (TextView)    rootView.findViewById(R.id.tv_EstimateTimeExpanded);
ImageButton removeTurn = (ImageButton) rootView.findViewById(R.id.ib_TrashExpanded);
Community
  • 1
  • 1
Adae Rodríguez
  • 183
  • 1
  • 18