Android: почему ArrayAdapter сначала отображает ноль? - PullRequest
1 голос
/ 26 февраля 2010

Когда я заполняю ArrayAdapter, сначала строки в видимой части экрана будут пустыми, за исключением первой строки, что будет нежелательным результатом. Затем, когда я прокручиваю его вниз и затем возвращаюсь, все экран будет настроен правильно ... пожалуйста, кто-нибудь скажет мне, почему это происходит?

Код:

        homeListView = (ListView) findViewById(R.id.home_list);
        homeArrayAdapter = new HomeListArrayAdapter(this, R.id.home_list,
                homeList);
        homeListView.setAdapter(homeArrayAdapter);

Следующая часть как класс, расширяющий ArrayAdapter, внутренний класс для деятельности:

    public View getView(int position, View convertView, ViewGroup parent) {
        View view = convertView;
        if (view == null) {
            LayoutInflater inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(R.layout.home, null);
        }

        Home item = (homeList).get(position);
        if (item != null) {
            if (item.type_text == Home.SIMPLE_SHOUT) {
                TextView tv1 = (TextView) findViewById(R.id.hTextView01);
                if (tv1 != null) {
                    tv1
                            .setText(String.format("   %s\t:",
                                    item.friend_name));
                    final String item_friend_id_01 = String
                            .valueOf(item.users_id);
                    tv1.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                            Toast toast = Toast.makeText(Tranz.this,
                                    item_friend_id_01, Toast.LENGTH_LONG);
                            toast.show();
                        }
                    });
                }
                TextView tv2 = (TextView) findViewById(R.id.hTextView02);
                if (tv2 != null) {
                    tv2.setText(String.format("\t%s", item.message));
                    tv2.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                        }
                    });

                }
                TextView tv3 = (TextView) findViewById(R.id.hTextView03);
                if (tv3 != null) {
                    tv3.setVisibility(0);
                    tv3.setText(null);
                    tv3.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                        }
                    });

                }
                ImageView imageView = (ImageView) findViewById(R.id.file_image);
                if (imageView != null) {
                    imageView.setBackgroundDrawable(null);
                }
            } else if (item.type_text == Home.FILE_SHOUT) {
                TextView tv1 = (TextView) findViewById(R.id.hTextView01);

Код усекается, поэтому весь код здесь не отображается. Я сожалею о том, что. Здесь я попытался поместить значения объекта класса Home в два textViews и ImageView, которые могут варьироваться в зависимости от значения, возвращаемого переменной item.type_text

Также, если кто-нибудь может подсказать мне другую лучшую практику для этого, пожалуйста, помогите.

Ответы [ 2 ]

2 голосов
/ 26 февраля 2010

Я не уверен, что это проблема, но, возможно, это поможет.

Я вижу, что вы передаете null в LayoutInflater.inflate в качестве второго параметра. Возможно, если вы передадите parent (который является ViewGroup, переданным в качестве третьего аргумента getView (), возможно, вашим ListView), вы получите лучшие результаты.

1 голос
/ 21 июня 2011

У меня была проблема, подобная этой, которую я решил, используя view.findViewById (R.id.hTextVew01) вместо просто findViewById(R.id.hTextView01)

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