1

ここに私のアダプタークラスがあります:-

public class CustomAdapter extends BaseAdapter {

        Context c;

        CustomAdapter(Context c)
        {
            this.c=c;
        }

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

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

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

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            final int pos=position;
            LayoutInflater inflater=LayoutInflater.from(c);
            View v=inflater.inflate(R.layout.layout_list_item, parent, false);
            ImageButton image_button=v.findViewById(R.id.imagebutton);
            image_button.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Toast.makeText(c, "Image Button clicked:" + pos, Toast.LENGTH_SHORT).show();
                }
            });

            return v;
        }

    }

すべての画像ボタンをクリック可能にするにはどうすればよいですか? 私は答えを探してみましたが、ここにある答えに従って、リストビューでイメージビューをクリック可能にする方法を試しましたが、最初の行のボタンだけがクリック可能です。助けてください。

4

2 に答える 2

1

カスタム アダプター コンストラクターで

    LayoutInflater mInflater;  
    CustomAdapter(Context c)
    {
        mInflater = LayoutInflater.from(c); 
        // initialize inflater in the constructor.
        // need not initialize everytime getView is called.
    }

ビュー ホルダーを使用する

http://developer.android.com/training/improving-layouts/smooth-scrolling.html

      static class ViewHolder
       {
           ImageButton ib;
       }
      @Override
      public View getView(int position, View item, ViewGroup parent) { 
       ViewHolder holder; 
       if(item == null){
       item = mInflater.inflate(R.layout.elementos_lista_temas, null);
       holder = new ViewHolder(); 
       holder.ib = (ImageButton) item.findViewById(R.id.imagebutton);
       item.setTag(holder);
       }
       else{
        holder = (ViewHolder)item.getTag();
       }
       return item;
       }

次に、アクティビティクラスで

 ListView lv = (ListView) findViewById(R.id.listview);
 CustomAdapter cus = new CustomAdapter(this);
 lv.setAdapter(cus); 
 lv.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> listView, View itemView, int itemPosition, long itemId)
    {           
         Toast.makeText(ActivityName.this, "Image Button clicked:" + itemPosition, Toast.LENGTH_SHORT).show();
    }
    });
于 2013-06-27T04:45:44.457 に答える
1

「リストビューの世界-2010」で語られているように、以下のリンクを参照して、アンドロイドでカスタムリストビューでビューホルダークラスを使用する方法を示してくださいhttp://impressive-artworx.de/2011/list-all-installed-apps/これがお役に立てば幸いです。

于 2013-06-27T04:45:50.553 に答える