千恋 2013-09-12 08:56 采纳率: 0%
浏览 2838

这个搜索功能怎么实现呀?求大神帮忙指点,谢谢!下面是代码

主程序的:
public class MainActivity extends Activity {
private ListView listview;
private MedicineService medicineservice;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
medicineservice = new MedicineService(this);

    listview = (ListView) this.findViewById(R.id.listview);
    Button button = (Button)findViewById(R.id.mybutton);
    button.setOnClickListener(new ButtonClickListener());


}
public class ButtonClickListener implements View.OnClickListener{
EditText txt = (EditText) findViewById(R.id.myEdit);
private String qwe = txt.getText().toString(); 
public void onClick(View v) {
    List<Medicine> medicines = medicineservice.getScrollData(0, 10);
    medicineservice.find(this.qwe);
    MedicineAdapter adapter = new MedicineAdapter(this, medicines, R.layout.item);
    List<HashMap<String,Object>> data = new ArrayList<HashMap<String,Object>>();
    for(Medicine medicine : medicines){
        HashMap<String,Object> item = new HashMap<String,Object>();
        item.put("name", medicine.getName());
        item.put("ename", medicine.getEname());
        item.put("content", medicine.getContent());
        item.put("id", medicine.getId());
        data.add(item);
    }
    //SimpleAdapter adapter = new SimpleAdapter(this,data,R.layout.item,new String[]{"name","ename","content"}, new int[]{R.id.name,R.id.ename,R.id.content});
    listview.setAdapter(adapter);
}

public LayoutInflater getSystemService(String layoutInflaterService) {

    return null;
}
}

}

自定义适配器的:
public class MedicineAdapter extends BaseAdapter {
private List medicines;//绑定的数据
private int resource;//绑定的界面
private LayoutInflater inflater;
public MedicineAdapter(ButtonClickListener buttonClickListener,List medicines,int resource ) {
this.medicines = medicines;
this.resource = resource;
inflater = (LayoutInflater) buttonClickListener.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

public int getCount() {
    return medicines.size();//得到总数
}

public Object getItem(int position) {
    return medicines.get(position);
}

public long getItemId(int position) {
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
    if(convertView==null){
        convertView = inflater.inflate(resource, null);
    }
    TextView nameView = (TextView) convertView.findViewById(R.id.name);
    TextView enameView = (TextView) convertView.findViewById(R.id.ename);
    TextView contentView = (TextView) convertView.findViewById(R.id.content);
    Medicine medicine = medicines.get(position);
    //下面代码实现数据绑定
    nameView.setText(medicine.getName());
    enameView.setText(medicine.getEname());
    contentView.setText(medicine.getContent());
    return convertView;
}

}

public LayoutInflater getSystemService这个该怎么写???谢谢各位大神。

  • 写回答

1条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-02-10 11:06
    关注

    该回答引用ChatGPT

    getSystemService方法是一个静态方法,不用自己写。此方法在Context中定义,它是一个用来返回系统服务的方法,通过它可以获得各种系统服务,比如布局加载服务(LAYOUT_INFLATER_SERVICE)、音频管理器(AUDIO_SERVICE)等。


    在您的代码中,您是从ButtonClickListener类的实例中调用getSystemService方法,这是不正确的。正确的做法是在MainActivity类中调用getSystemService方法。


    可以这样修改代码:

    public class MainActivity extends Activity {
        private ListView listview;
        private MedicineService medicineservice;
    
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            medicineservice = new MedicineService(this);
    
            listview = (ListView) this.findViewById(R.id.listview);
            Button button = (Button) findViewById(R.id.mybutton);
            button.setOnClickListener(new ButtonClickListener());
        }
    
        public class ButtonClickListener implements View.OnClickListener {
            EditText txt = (EditText) findViewById(R.id.myEdit);
            private String qwe = txt.getText().toString();
    
            public void onClick(View v) {
                List<Medicine> medicines = medicineservice.getScrollData(0, 10);
                medicineservice.find(this.qwe);
                MedicineAdapter adapter = new MedicineAdapter(MainActivity.this, medicines, R.layout.item);
                List<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
                for (Medicine medicine : medicines) {
                    HashMap<String, Object> item = new HashMap<String, Object>();
                    item.put("name", medicine.getName());
                    item.put("ename", medicine.getEname());
                    item.put("content", medicine.getContent());
                    item.put("id", medicine.getId());
                    data.add(item);
                }
                listview.setAdapter(adapter);
            }
        }
    }
    

    并且,在MedicineAdapter类中不需要写getSystemService方法。

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题