Заполнение 4 пунктов в списке на любом устройстве - PullRequest
0 голосов
/ 17 августа 2011

Я разрабатываю приложение, которое должно отображать ровно 4 элемента одновременно в виде списка, независимо от устройства.

Как получить размер представления списка на устройстве и задать высоту элементов списка, чтобы они соответствовали 4 разам на экране?

1 Ответ

0 голосов
/ 17 августа 2011

1 - продление ListView класс

public class CustomListView extends ListView {

    public CustomListView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public CustomListView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomListView(Context context) {
        super(context);
    }

    private Runnable afterLayoutRunnable;

    public void setAfterLayoutRunnable(Runnable afterLayoutRunnable) {
        this.afterLayoutRunnable = afterLayoutRunnable;
    }

    @Override
    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
        super.onLayout(changed, left, top, right, bottom);
        if (afterLayoutRunnable != null) {
            afterLayoutRunnable.run();
        }
    }

}

2 - создайте свой собственный ArrayAdapter

public class CustomListAdapter extends ArrayAdapter<MyObject> {
    public CustomListAdapter(Context context, int textViewResourceId, List<MyObject> objects) {
        super(context, textViewResourceId, objects);
    }

    public View getView(int position, View convertView, ViewGroup parent) {

        if (convertView == null) {
            LayoutInflater layoutInflater = (LayoutInflater) getContext().getSystemService(
                    Context.LAYOUT_INFLATER_SERVICE);
            convertView = layoutInflater.inflate(R.layout.my_item_layout, null);
            int height = TestActivity.listItemsMinimumHieght;
            if (height > 0) {
                convertView.setMinimumHeight(height);
            }
        }

    }

}

3- в вашем Activity

public class TestActivity extends Activity {
    public static int listItemsMinimumHieght = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        final CustomListView customListView = (CustomListView) findViewById(R.id.conversation_activity_button_send);
        customListView.setAfterLayoutRunnable(new Runnable() {

            @Override
            public void run() {
                listItemsMinimumHieght = customListView.getHeight() / 4;
                ArrayList<MyObject> objects=getListContent();
                customListView.setAdapter(new ListViewConversationAdapter(TestActivity.this, R.id.sample, objects));

            }
        });

    }

}

я думаю, что это должно сработать, удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...