3

アプリに問題があります。私のアプリでは、リストビューアダプターを絞り込み、ボタンを使用してアイテムを表示していますが、「すべてのレコードを表示」などのボタンをクリックすると、リストビューのアイテムがグレー表示されます。

コードはそれ自体を物語っていると思います:

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 をクリックすると、リストビューのアダプターがすべてのアイテムを表示するように設定され、アイテムは表示されますが、行はグレー表示されます。グレーアウトしないようにするにはどうすればよいですか? 編集:いくつかのコーディングの後、アダプターを編集しました。リストビューのアダプターのコードは次のとおりです。

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
4

1 に答える 1

3

getApplicationContext()アクティビティで使用する必要はありません。thisまたはを使用しYourActivity.thisます。

  • getBaseContext()- 現在のアクティビティのコンテキストを取得し (ただし、代わりに Context を使用する必要があります)、アクティビティが破棄されたときに破棄できます

  • getApplicationContext()` - ライフ サイクル全体のすべてのアクティビティで同じであるアプリ グローバル コンテキスト。

ビューにアダプターを設定する場合は、アクティビティのコンテキストをYourActivity.this(baseContextトリックを行いますが、Google は使用をお勧めしません) のように使用します。

于 2012-12-24T09:49:38.070 に答える