改变listivew的项目的形象永久 [英] change image of listivew's item permanently

查看:149
本文介绍了改变listivew的项目的形象永久的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图改变ListView的项目的形象,如果用户选择该项目,它的形象改变永久与我的code。但是当其他项目用户点击previously只改变一个项目改变项目得到改变默认,新选定的项目得到改变,因此on.how永久进行更改??

MainActivity

 列表< RowItem> rowItems;
    私人BaseClass的适配器;    @覆盖
    保护无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        Singleton.populate =新的ArrayList< Singleton.ProfileBean>();
        的setContentView(R.layout.fragment_main);        lay1 =(的LinearLayout)findViewById(R.id.lay1);
        lay2 =(的LinearLayout)findViewById(R.id.lay2);        lay2.setVisibility(View.VISIBLE);
        IMG = R.drawable.praying_hands_normal;        rowItems =新的ArrayList< RowItem>();
        的for(int i = 0; I< 50;我++){
            RowItem项目=新RowItem(迪亚斯[I],祈祷[I],IMG);
            rowItems.add(项目);
        }        ListView控件=(ListView控件)findViewById(R.id.listview);        适配器=新BaseClass的(这一点,rowItems);
        listView.setAdapter(适配器);
        listView.setOnItemClickListener(新AdapterView.OnItemClickListener(){            @覆盖
            公共无效onItemClick(适配器视图<>母公司,观景,
                    INT位置,长的id){
                // TODO自动生成方法存根                POS =位置;                意图I =新意图(MainActivity.this,OpenActivity.class);
                startActivity(ⅰ);            }
        });    }

的BaseClass

 公共类BaseClass的延伸BaseAdapter {
        上下文语境;
        清单< RowItem> rowItems;        / *私有视图holder类* /
        公共类ViewHolder {
            公共ImageView的ImageView的;
            公众的TextView txtDias;
            公众的TextView txtPrayers;        }        公众的BaseClass(上下文的背景下,列表与LT; RowItem> rowItems){
            // TODO自动生成构造函数存根
            this.context =背景;
            this.rowItems = rowItems;
        }        公共查看getView(INT位置,查看convertView,父母的ViewGroup){
            ViewHolder支架=无效;            LayoutInflater mInflater =(LayoutInflater)上下文
                    .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
            如果(convertView == NULL){
                convertView = mInflater.inflate(R.layout.list,NULL);
                持有人=新ViewHolder();                holder.txtDias =(TextView中)convertView.findViewById(R.id.dias);
                holder.txtPrayers =(TextView中)convertView
                        .findViewById(R.id.prayers);
                holder.imageView =(ImageView的)convertView
                        .findViewById(R.id.symbol);
                convertView.setTag(保持器);
            }其他{
                支架=(ViewHolder)convertView.getTag();
            }            RowItem rowItem =(RowItem)的getItem(位置);            holder.txtPrayers.setText(rowItem.getDesc());
            holder.txtDias.setText(rowItem.getTitle());
            holder.imageView.setImageResource(R.drawable.praying_hands_normal);
          如果(POS ==位置和放大器;&安培; OpenActivity.a + OpenActivity.b +
                  OpenActivity.c == 1 || OpenActivity.a + OpenActivity.b +
                  OpenActivity.c == 2)
          {
              holder.imageView.setImageResource(R.drawable.praying_hands_bookmark);          }          否则,如果(POS ==位置和放大器;&安培; OpenActivity.a + OpenActivity.b +
                  OpenActivity.c == 3)
          {
              holder.imageView.setImageResource(R.drawable.praying_hands_selected);
          }
          返回convertView;        }

OpenActivity

 公共类OpenActivity扩展活动实现OnClickListener {
    按钮BTN1,BTN2,btn3;
    公共静态int类型的= 0,B = 0,C = 0;
OpenActivity实例;
    @覆盖
    保护无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.openactivity);        BTN1 =(按钮)findViewById(R.id.button1);
        BTN2 =(按钮)findViewById(R.id.button2);
        btn3 =(按钮)findViewById(R.id.button3);
        btn1.setOnClickListener(本);
        btn2.setOnClickListener(本);
        btn3.setOnClickListener(本);
    }    @覆盖
    公共无效的onClick(视图v){
        // TODO自动生成方法存根
        如果(V == BTN1){
            意图I =新意图(这一点,DFamily.class);
            startActivity(ⅰ);
            一个= 1;            Toast.makeText(getApplication(),BTN,Toast.LENGTH_SHORT).show();        }否则如果(V == BTN2){
            意图=新的意图(这一点,DIndividual.class);
            startActivity(一);
            B = 1;
            Toast.makeText(getApplication(),将String.valueOf(b)中,Toast.LENGTH_SHORT).show();
    }否则如果(V == btn3){
            意向X =新意图(这一点,DGroup.class);
            startActivity(X);
            C = 1;
            Toast.makeText(getApplication(),BTN2,Toast.LENGTH_SHORT).show();
        }    }


解决方案

我想你需要一个新的适配器。这来自一个源项目,这样你可以设置所使用的商品图像的setimage()方法。这样,它不是一个ListViewItem,获取更新了项目本身。你明白吗?

i am trying to change the image of the listview's item,if user select the item,its image change permanently .but with my code only single item is changed when user click on other item the previously changed item get changed to default and new selected item get change and so on.how to make this change permanently..??

MainActivity

List<RowItem> rowItems;
    private BaseClass adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Singleton.populate = new ArrayList<Singleton.ProfileBean>();
        setContentView(R.layout.fragment_main);

        lay1 = (LinearLayout) findViewById(R.id.lay1);
        lay2 = (LinearLayout) findViewById(R.id.lay2);

        lay2.setVisibility(View.VISIBLE);
        img = R.drawable.praying_hands_normal;

        rowItems = new ArrayList<RowItem>();
        for (int i = 0; i < 50; i++) {
            RowItem item = new RowItem(Dias[i], Prayers[i], img);
            rowItems.add(item);
        }



        listView = (ListView) findViewById(R.id.listview);

        adapter = new BaseClass(this, rowItems);
        listView.setAdapter(adapter);


        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // TODO Auto-generated method stub

                pos = position;

                Intent i = new Intent(MainActivity.this, OpenActivity.class);
                startActivity(i);

            }
        });

    }

BaseClass

public class BaseClass extends BaseAdapter {
        Context context;
        List<RowItem> rowItems;

        /* private view holder class */
        public class ViewHolder {
            public ImageView imageView;
            public TextView txtDias;
            public TextView txtPrayers;

        }

        public BaseClass( Context context,List<RowItem> rowItems) {
            // TODO Auto-generated constructor stub
            this.context = context;
            this.rowItems = rowItems;
        }

        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder = null;

            LayoutInflater mInflater = (LayoutInflater) context
                    .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
            if (convertView == null) {
                convertView = mInflater.inflate(R.layout.list, null);
                holder = new ViewHolder();

                holder.txtDias = (TextView) convertView.findViewById(R.id.dias);
                holder.txtPrayers = (TextView) convertView
                        .findViewById(R.id.prayers);
                holder.imageView = (ImageView) convertView
                        .findViewById(R.id.symbol);
                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
            }

            RowItem rowItem = (RowItem) getItem(position);

            holder.txtPrayers.setText(rowItem.getDesc());
            holder.txtDias.setText(rowItem.getTitle());
            holder.imageView.setImageResource(R.drawable.praying_hands_normal);
          if(pos == position && OpenActivity.a + OpenActivity.b +
                  OpenActivity.c == 1 || OpenActivity.a + OpenActivity.b +
                  OpenActivity.c == 2)
          {
              holder.imageView.setImageResource(R.drawable.praying_hands_bookmark);

          } 

          else if(pos == position && OpenActivity.a + OpenActivity.b +
                  OpenActivity.c == 3 )
          {
              holder.imageView.setImageResource(R.drawable.praying_hands_selected);
          }


          return convertView;

        }

OpenActivity

public class OpenActivity extends Activity implements OnClickListener {
    Button btn1, btn2, btn3;
    public static int a= 0,b=0,c=0;
OpenActivity Instance;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.openactivity);

        btn1 = (Button) findViewById(R.id.button1);
        btn2 = (Button) findViewById(R.id.button2);
        btn3 = (Button) findViewById(R.id.button3);
        btn1.setOnClickListener(this);
        btn2.setOnClickListener(this);
        btn3.setOnClickListener(this);




    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        if (v == btn1) {
            Intent i = new Intent(this, DFamily.class);
            startActivity(i);
            a =1;

            Toast.makeText(getApplication(), "BTN", Toast.LENGTH_SHORT).show();

        } else if (v == btn2) {
            Intent a = new Intent(this, DIndividual.class);
            startActivity(a);
            b =1;
            Toast.makeText(getApplication(), String.valueOf(b), Toast.LENGTH_SHORT).show();
    } else if (v == btn3) {
            Intent x = new Intent(this, DGroup.class);
            startActivity(x);
            c =1;
            Toast.makeText(getApplication(), "BTN2", Toast.LENGTH_SHORT).show();
        }

    }

解决方案

I think you need a new adapter. Items that come from a source, that way you can set that items image using a setimage() method. That way its not the listviewitem that gets updated its the item itself. Do you understand?

这篇关于改变listivew的项目的形象永久的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆