Список показывает неверную базу на BaseAdapter - PullRequest
0 голосов
/ 23 марта 2012

MyAdapter - это BaseAdapter.Часть этого, как показано ниже:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewTag viewTag;
if(convertView == null) {
convertView = myInflater.inflate(R.layout.myrow, null);
viewTag = new ViewTag((ImageView)convertView.findViewById(R.id.myicon),  (TextView)convertView.findViewById(R.id.mytext));
convertView.setTag(viewTag);
}
else {
viewTag = (ViewTag) convertView.getTag();
}
viewTag.mytext.setText(MyTitle[position]);
if(Icon[position].equals("Yes")) {
viewTag.myicon.setVisibility(View.VISIBLE);
}
else {
viewTag.myicon.setVisibility(View.INVISIBLE);
}
}
class ViewTag {
ImageView myicon;
TextView mytext;
public ViewTag(ImageView iv1, TextView tv1) {
this.myicon = iv1;
this.mytext = tv1;
}
}

И вызовите, как показано ниже в Activity:

private Runnable updateRunnable = new Runnable() { 
public void run() {
MyAdapter.notifyDataSetChanged();
handler.postDelayed(updateRunnable, 1000);
}
};

Почему значок показывает ошибку?Не то же самое, что массив значков.Значок arrar всегда включен только «Да».Таким образом, список должен показывать только один значок за раз.Но иногда показывают больше, чем один.Как его изменить?

1 Ответ

1 голос
/ 23 марта 2012

Вы можете выполнить это следующим образом: -

package com.CommonMethod.Activity;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;

public class ListViewDemo extends Activity {
    ListView LS;
    LayoutInflater Linflater;
    String _StrError[] = new String[] { "Yes", "No", "Yes", "No", "No", "Yes",
            "Yes", "No", "Yes", "No" };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listviewdemo);
        LS = (ListView) findViewById(R.id.LSOne);

        Linflater = (LayoutInflater) this
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        LS.setAdapter(new ListAdapter(this));
    }

    public class ListAdapter extends BaseAdapter {

        public ListAdapter(Context con) {

        }

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return 10;
        }

        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return 0;
        }

        @Override
        public int getViewTypeCount() {
            // TODO Auto-generated method stub
            return 10;
        }

        @Override
        public int getItemViewType(int position) {
            // TODO Auto-generated method stub
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View ReturnView = convertView;
            int _intPostion = getItemViewType(position);
            ViewHolder Holder = Holder = new ViewHolder();
            if (ReturnView == null) {
                ReturnView = Linflater.inflate(R.layout.rawlistview, null);
                Holder.LL = (LinearLayout) ReturnView.findViewById(R.id.LLOne);
                Holder.IV = (ImageView) ReturnView
                        .findViewById(R.id.imageView1);
                if (_StrError[_intPostion].equalsIgnoreCase("Yes")) {

                    Holder.IV.setBackgroundResource(R.drawable.ic_launcher);
                } else {

                    Holder.IV.setBackgroundResource(R.drawable.logo);
                }

                ReturnView.setTag(Holder);

            } else {
                Holder = (ViewHolder) ReturnView.getTag();
                ReturnView.setTag(Holder);
            }
            return ReturnView;
        }

        public class ViewHolder {

            LinearLayout LL;
            ImageView IV;
        }

    }
}
...