【发布时间】:2018-02-19 00:44:52
【问题描述】:
我正在尝试将从片段内的包中检索到的数据发送到 ListView 的适配器,以便可以显示数据,具体取决于以前的用户选择。
我可以记录正确的数据正在发送到我的片段,但是当我尝试将该数据传递到我的适配器的构造函数时,ListView 不会被填充。我不确定这是否是将数据发送到适配器的正确方法,尤其是因为数据不是来自游标。
在我的片段中,这是相关代码:
public class AddEditRecipeActivityFragment extends Fragment {
ListView mListView;
private IngredientListAdapter mIngredientListAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.d(TAG, "onCreateView: starts");
View view = inflater.inflate(R.layout.fragment_add_edit_recipe, container, false);
mNameTextView = (EditText) view.findViewById(R.id.addedit_name);
mAddItem = (ImageButton) view.findViewById(R.id.addGrocery);
mDescriptionTextView = (EditText) view.findViewById(R.id.addedit_description);
mMealType = (EditText) view.findViewById(R.id.addedit_meal);
mSaveButton = (Button) view.findViewById(R.id.addedit_save);
mListView = (ListView) view.findViewById(R.id.lstIngredient);
Bundle arguments = getArguments();
String addedGrocery = arguments.getString("GroceryName");
String addedGroceryGrams = arguments.getString("grams");
Log.d(TAG, "onCreateView: retrieved ingredient = " + addedGrocery
+ " retrieved amount = " + addedGroceryGrams );
mIngredientListAdapter = new IngredientListAdapter(getActivity(), null,
0, addedGrocery, addedGroceryGrams ) ;
mListView.setAdapter(mIngredientListAdapter);
.... }
这是我的适配器代码,修改自 CursorAdapter 类:
public class IngredientListAdapter extends CursorAdapter {
private static final String TAG = "IngredientListAdapter";
private LayoutInflater mInflater;
private Context mContext;
private String mIngredient;
private String mGrams;
public IngredientListAdapter(Context context, Cursor c, int flags, String ingredient, String grams) {
super(context, c, flags);
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.mIngredient = ingredient;
this.mGrams = grams;
}
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View view = mInflater.inflate(R.layout.ingrediend_listview, parent, false);
ViewHolder holder = new ViewHolder();
holder.ingredient = (TextView) view.findViewById(R.id.ingredient);
holder.amount = (TextView) view.findViewById(R.id.amount);
view.setTag(holder);
return view;
}
public void bindView(View view, Context context, Cursor cursor) {
ViewHolder holder = (ViewHolder) view.getTag();
Log.d(TAG, "bindView: Starts");
Log.d(TAG, "bindView: ingredient = " + mIngredient);
holder.ingredient.setText(mIngredient);
holder.amount.setText(mGrams);
}
static class ViewHolder {
TextView ingredient;
TextView amount;
}
}
当我尝试查看我的 IngredientListAdapter 类的日志时,什么都没有显示。这很奇怪,因为我有另一个扩展 CursorAdapter 的适配器并且这些日志正在工作 - 可能是因为它们涉及游标参数?
我显然在这里遗漏了一些重要的东西,任何帮助将不胜感激!
【问题讨论】:
标签: java android listview android-fragments adapter