B M*_*B M 5 android android-intent intentservice
我想在意向服务中获得活动.在意向服务中,将数据填充到列表控件.当我在FloatSomeService(IntentService)中调用DictionaryListAdapter时,不要获取活动.
(FloatSomeService.java)服务
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
windowManager = (WindowManager)getSystemService(WINDOW_SERVICE);
// Find Controls
LayoutInflater inflater = LayoutInflater.from(this);
viewFloat = inflater.inflate(R.layout.float_view, null);
listview = (ListView)viewFloat.findViewById(R.id.listDic);
this.generateData();
// *** Error : When create adapter, get activity from base context *** //
myAdapter = new DictionaryListAdapter((Activity)getBaseContext(), myListItem);
listview.setAdapter(myAdapter);
......................
windowManager.addView(viewFloat, parameters);
}
Run Code Online (Sandbox Code Playgroud)
(DictionaryListAdapter.java)
public class DictionaryListAdapter extends BaseAdapter{
private Activity myContext;
private ArrayList<HistoryListItem> myItems;
public DictionaryListAdapter(Activity activity, ArrayList<DictionaryListItem> items){
this.myContext = activity;
this.myList = items;
}
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
if (convertView == null) {
LayoutInflater layoutInflater = this.myContext.getLayoutInflater();
convertView = layoutInflater.inflate(R.layout.history_list_item, null);
}
ImageView imgPerson = (ImageView)convertView.findViewById(R.id.imgPerson);
...........................
}}
Run Code Online (Sandbox Code Playgroud)
我使用了一些列表控件数据绑定的技巧。我用 LayoutInflater 解决了。如果我得到布局充气器,我可以将数据填充到控件中。Intent Service可以获得Layout Inflater。我将 LayoutInflater 从意图服务发送到我的 DictionaryListAdapter 类。
没关系对我来说。
(FloatSomeService.java) 意图服务
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
windowManager = (WindowManager)getSystemService(WINDOW_SERVICE);
// Find Controls
LayoutInflater inflater = LayoutInflater.from(this);
viewFloat = inflater.inflate(R.layout.float_view, null);
listview = (ListView)viewFloat.findViewById(R.id.listDic);
this.generateData();
// *** Send Inflater to List Adapter
myAdapter = new DictionaryListAdapter((LayoutInflater)getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE), myListItem);
listview.setAdapter(myAdapter);
......................
windowManager.addView(viewFloat, parameters);}
Run Code Online (Sandbox Code Playgroud)
(DictionaryListAdapter.java) 列表适配器
public class DictionaryListAdapter extends BaseAdapter{
private LayoutInflater layoutInflater;
private ArrayList<HistoryListItem> myItems;
public DictionaryListAdapter(LayoutInflater inflater, ArrayList<DictionaryListItem> items){
this.layoutInflater = inflater;
this.myList = items;
}
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
if (convertView == null) {
// don't need activity for layout inflater
convertView = this.layoutInflater.inflate(R.layout.history_list_item, null);
}
ImageView imgPerson = (ImageView)convertView.findViewById(R.id.imgPerson);
...........................
}}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10466 次 |
| 最近记录: |