Центрирование 2 TextViews в LinearLayout, текст отображается только при прокрутке - PullRequest
1 голос
/ 13 апреля 2011

Я пытаюсь центрировать два textView, которые находятся в LinearLayout. Этот LinearLayout вложен в другой элемент ListView.

Я думаю, что мой XML довольно правильный. Я заполняю свои textViews динамически в моем Adapterclass. XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:orientation="vertical">

    <LinearLayout
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"
    android:gravity="center">

    <TextView android:layout_height="wrap_content" 
    android:id="@+id/atlVacaturesnummer"
    android:layout_width="wrap_content" 
    android:textColor="@color/Accent"
    android:text="x"
    />


    <TextView android:layout_height="wrap_content" 
    android:id="@+id/atlVacatures"
    android:layout_width="wrap_content" 
    android:text="y"
    />

    </LinearLayout>

    <ListView android:id="@+id/android:list" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:layout_weight="1"
    android:drawSelectorOnTop="false" />

    <TextView android:layout_height="fill_parent" 
    android:id="@+id/android:empty"
    android:layout_width="fill_parent" 
    android:text="Er zijn geen jobs die voldoen aan uw criteria..."
    android:gravity="center"/>

</LinearLayout>    

Adapterclass:

/*
 * Klasse VacatureAdapter
 */
private class VacatureAdapter extends ArrayAdapter<Vacature>{
    private ArrayList<Vacature> vacatures;


    public VacatureAdapter(Context context, int textViewResourceId, ArrayList<Vacature> vacatures){
        super(context, textViewResourceId, vacatures);
        this.vacatures = getArray();
        //System.out.println("Array vacatureadapter: " + v);
    }

    @Override
    public View getView(int position, View convertview, ViewGroup parent){

        View view = convertview;
        if(view==null){
            LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = vi.inflate(R.layout.vacature_list_item, null);
            //view.setBackgroundColor((position % 2) == 1? Color.LTGRAY: Color.WHITE);
        }

        TextView atlVacatures = (TextView)findViewById(R.id.atlVacatures);
            TextView atlVacaturesnr = (TextView)findViewById(R.id.atlVacaturesnummer);
            atlVacaturesnr.setText("" + arrVacatures.size());
            atlVacatures.setText(" jobs op maat gevonden!");

        Vacature vaca = vacatures.get(position);

        if(vaca != null){               
            TextView tvNaam = (TextView) view.findViewById(R.id.vacatureNaam);
            TextView tvWerkveld = (TextView) view.findViewById(R.id.vacatureWerkveld);
            TextView tvRegio = (TextView) view.findViewById(R.id.vacatureRegio);
        if(tvNaam != null){   





            tvNaam.setText(vaca.getTitel());
            if(tvWerkveld != null){
                tvWerkveld.setText("Werkveld: " + vaca.getWerkveld());
                if(tvRegio!=null){
                    tvRegio.setText("Regio: "+vaca.getRegio());
                }
            }
        }
        }
        return view;
    }
}

Странная вещь в том, что если мой вращатель работает, он правильно показывает тексты, заданные в моем XML, если вращатель останавливается и заполняет мой ListView, он показывает только одну цифру моего номера, и когда я прокручиваю, как только он показывает мой номер плюс второй TextView. Я не совсем понимаю, в чем дело, может быть, какой-то код нужно поместить куда-нибудь еще?

1 Ответ

1 голос
/ 14 апреля 2011

Я решил свою проблему, поместив свой код setText в мой метод Runnable после того, как закрыл диалог.Теперь это выглядит так:

    private Runnable returnRes = new Runnable(){
    public void run(){
        if (arrVacatures.size() == 0){
            dialog.dismiss();
        }
        if(arrVacatures!=null && arrVacatures.size() > 0){
            adapter.notifyDataSetChanged();
            for(int i= 0; i< arrVacatures.size();i++){
                adapter.add(arrVacatures.get(i));
            }
            dialog.dismiss();


            TextView atlVacatures = (TextView)findViewById(R.id.atlVacatures);
            TextView atlVacaturesnr = (TextView)findViewById(R.id.atlVacaturesnummer);
            atlVacaturesnr.setText("" + arrVacatures.size());
            atlVacatures.setText(" jobs op maat gevonden!");

            adapter.notifyDataSetChanged();
        }
    }
};
...