在按钮的onclicklistener中设置listview适配器后,Listview项目变灰了吗?

时间:2012-11-30 00:29:16

标签: android listview button

我的应用中存在问题;在我的应用程序中,我使用按钮优化listviews适配器及其项目,但当我单击“显示所有记录”之类的按钮时,列表视图中的项目将显示为灰色。

我认为代码不言自明:

show_all_Button.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {

                Rest_menu menu = new Rest_menu();
                menu = (Rest_menu)v.getTag();
                myAdapter adapter = new myAdapter(getApplicationContext(), menu.all_array);

                listView.setAdapter(adapter);

            }
        });

如您所见,通过单击show_all_button,listview的适配器设置为显示所有项目,并显示项目,但行显示为灰色。我该怎么做才能让它们变灰? 编辑:经过一些编码后,编辑了适配器,这里是listview适配器的代码:

public class foodAdapter extends ArrayAdapter<Food> {


    Context context;
    public Food[] iteminarow;
    public foodAdapter(Context context,Food[] iteminarow)
    {
        super(context, R.layout.listitem,iteminarow);
        this.context=context;
        this.iteminarow=iteminarow;
    }

    static class ViewHolder{
        TextView foodname;
        TextView foodprice;
        TextView foodinfo;
        public ViewHolder(TextView foodname,TextView foodprice,TextView foodinfo)
        {
            this.foodname=foodname;
            this.foodprice=foodprice;
            this.foodinfo=foodinfo;
        }
    }//end of ViewHolder

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        TextView name,price,info;
        Food f = (Food)this.getItem(position);

        if(convertView==null)
        {
            LayoutInflater LI = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = LI.inflate(R.layout.listitem,parent,false);
            name=(TextView)convertView.findViewById(R.id.foodname);
            price=(TextView)convertView.findViewById(R.id.foodprice);
            info=(TextView)convertView.findViewById(R.id.foodinfo);
            convertView.setTag(new ViewHolder(name, price, info));
        }//end of if



        else {
        ViewHolder holder = (ViewHolder) convertView.getTag();
        name = holder.foodname;
        price = holder.foodprice;
        info = holder.foodinfo;
        }//end of else

        name.setText(f.getName().toString());
        price.setText(f.getPriceString());
        info.setText(f.getInfo().toString());

        return convertView;
    }


}//end of adapter

1 个答案:

答案 0 :(得分:3)

您不必在“活动”中使用getApplicationContext()。使用thisYourActivity.this

  • getBaseContext() - 为您提供当前活动的背景信息(但是 你应该使用Context而且可以在活动时被销毁 毁

  • getApplicationContext()` - app全局上下文,它是相同的 生命周期中的所有活动。

如果您想为视图设置适配器,请使用您的活动的上下文,例如YourActivity.thisbaseContext可以解决问题,但Google建议不要使用它。)