我正在使用选项卡布局。我正在从live DB获取数据,以便在listview中显示信息。为此,我使用CustomAdapter。arraylist中正确获取的值。一旦将Arraylist数据传递给CustomAdapter,则上下文将出现null异常。如何将片段的上下文传递给自定义适配器。
自定义适配器构造函数
/**Here in Constructor, context getting null value. App Crashing*/
public HotelCustomAdapter(Context hotelMaster, int textViewResourceId,ArrayList<GetSetOffers> hotelLists) {
super(hotelMaster,textViewResourceId, hotelLists);
hotelList=hotelLists;
context=hotelMaster;
inflater = ( LayoutInflater )context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
已编辑:
碎片
从片段中,我调用AsyncTask类从云获取数据。从postExecute,我将Arraylist传递给fragment方法。此时,上下文为空。如何修复此问题。
片段类
public class OneFragment extends Fragment implements View.OnClickListener{
View view;
Button ok;
TextView text;
public ListView list;
HotelCustomAdapter hca;
ArrayList<GetSetOffers> temp;
Context context;
public OneFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ScrollView scroller = new ScrollView(getActivity());
view = inflater.inflate(R.layout.fragment_one, container, false);
ok = (Button) view.findViewById(R.id.ok);
text = (TextView)view.findViewById(R.id.text);
list = (ListView) view.findViewById(R.id.list);
ok.setOnClickListener(this);
context=view.getContext(); // Here the context is assigned
new AsyncHotel(getActivity()).execute("19");
return view;
}
//After the value got from postExecute, it was showing null to the context
public void getAdapterView(ArrayList<GetSetOffers> hotelList){
//temp=hotelList;
hca=new HotelCustomAdapter(context,R.layout.hotel_custom_listview,hotelList);
list.setAdapter(hca);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.ok:
text.setText("Y You Clicked.?");
//hca=new HotelCustomAdapter(getActivity(),R.layout.hotel_custom_listview,temp);
//list.setAdapter(hca); // tried this
break;
}
}
}
postExecute()方法
@Override
protected void onPostExecute(String result) {
try {
root = new JSONObject(result);
validation = root.getInt("response");
JSONArray data = root.getJSONArray("data");
if (validation == 1) {
for (int i = 0; i < data.length(); i++) {
hgs = new GetSetOffers();
hgs.setOfferTitle(data.getJSONObject(i).getString("hotel_name"));
hgs.setOfferDescrip(data.getJSONObject(i).getString("city"));
hgs.setOfferToDt(data.getJSONObject(i).getString("hotel_name"));
hotelList.add(hgs);
}
OneFragment one=new OneFragment(); // I think here I am doing wrong
one.getAdapterView(hotelList);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
我认为将值从AsyncTask postExecute方法传递到Fragment是错误的。片段上下文再次为null。
上下文是全局声明的。在调用AsyncTask类之前,上下文变量被分配给Active。该片段上下文现在有值。AsyncTask类完成其任务,然后将列表传递给片段,方法是在postExecute()方法中为该片段创建新对象,然后将该列表传递给自定义数组适配器,并且上下文为空。请参阅图像。
我再次尝试将收到的列表分配给片段中的全局变量。然后单击按钮后,我尝试将列表传递给自定义阵列适配器。现在,上下文具有值,列表更改为空,即使该列表已分配给全局变量
//After the value got from postExecute, it was showing null to the context
public void getAdapterView(ArrayList<GetSetOffers> hotelList){
hca=new HotelCustomAdapter(getActivity(),R.layout.hotel_custom_listview,hotelList);
list.setAdapter(hca);
}
仅执行此更改。无需更改适配器中的上下文。它会起作用的。
请试试这个-
//After the value got from postExecute, it was showing null to the context
public void getAdapterView(ArrayList<GetSetOffers> hotelList){
hca=new HotelCustomAdapter(getActivity(),R.layout.hotel_custom_listview,hotelList);
list.setAdapter(hca);
}
并且在适配器类中也这样做。
/**Here in Constructor, context getting null value. App Crashing*/
Activity context;
public HotelCustomAdapter(Activity hotelMaster, int textViewResourceId,ArrayList<GetSetOffers> hotelLists) {
super(hotelMaster,textViewResourceId, hotelLists);
hotelList=hotelLists;
this.context=hotelMaster;
inflater = ( LayoutInflater )context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
因为这样的问题,我开始这样做:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);
...
}
我正在尝试将ListView与fragmnet中的自定义适配器(baseAdapter)一起使用。 当我直接在MainActivity中使用此代码时,一切正常,但当我在片段中使用此代码时,它没有崩溃,但它没有显示任何内容,它只是一个空白片段。另外,当我尝试使用简单的arrayAdapter在片段中绑定一个textView时,它工作得很好,所以我认为问题将出现在我的自定义适配器中。 为什么不显示Li
问题内容: 这个想法是我有一个列表视图,其中每个项目都是一个产品,当我单击该项目时,我需要从列表视图的适配器内部的单击中转到另一个片段。 我的适配器是: 您必须假设所有代码都在工作。 如何转到适配器内的产品Fragment? 问题答案: 为了解决这个问题,我要做的是: 在主类中,我将参数作为值,并通过开关在我感兴趣的main中设置了片段。
在适配器中 Holder.NameExam2.SetOnClickListener(新建View.OnClickListener(){ 成碎片 @覆盖公共视图onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){ 它在getString()中调用空指针异常。如何解决。
英文原文:http://emberjs.com/guides/models/customizing-adapters/ 在Ember Data中,处理与后台数据仓库通信的逻辑是通过Adapter来完成的。Ember Data适配器内置了一些关于REST API的假定。如果后台的实现与Ember Data假定的惯例不同,那么通过扩展缺省的适配器可能很容易的实现。 有时因为一些原因需要自定义适配器,例
Ember.js适配器指定如何在后端数据存储中保存数据,例如URL格式和REST API标头。 默认的Ember适配器包含一些REST API的内置假设。 这些假设有助于更轻松,更好地构建Web应用程序。 可以使用以下命令创建适配器 - ember generate adapter adapter-name 运行上面的命令时,它将显示以下行 - import DS from 'ember-dat
我使用的是Liferay 6.1 CE版本。我在控制面板的用户实体中添加了自定义属性。我想在create_account中添加这个自定义字段。jsp钩子页。我是这样加的。 之后,我尝试在UserLocalService钩子类中获取这个值,该类扩展了UserLocalServiceWrapper类-(钩子)。我从中找到每个值,但无法获得自定义字段值。 我正试图获得这样的自定义字段值。 但我得到的是空