- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想显示 content_list_drink_details.xml
中的 TextView(配料名称和配料价格)到 cart_layout.xml 的适配器。
但看起来我的 getLayoutInflater()
无法解析。
我不确定这是否可行,因此我真的需要你们这些专家的帮助。
这是我的 CartAdapter.java:
public class CartAdapter extends RecyclerView.Adapter<CartViewHolder> {
private List<Order> listData = new ArrayList<>();
private Context context;
public CartAdapter(List<Order> listData, Context context) {
this.listData = listData;
this.context = context;
}
@Override
public CartViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(context);
View itemView = inflater.inflate(R.layout.cart_layout,parent,false);
return new CartViewHolder(itemView);
}
@Override
public void onBindViewHolder(CartViewHolder holder, int position) {
TextDrawable drawable = TextDrawable.builder()
.buildRound(""+listData.get(position).getQuantity(), Color.parseColor("#ed008c"));
holder.img_cart_count.setImageDrawable(drawable);
Locale locale = new Locale("ms","MY");
NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
double price = (Double.parseDouble(listData.get(position).getPrice()))* (Integer.parseInt(listData.get(position).getQuantity()));
holder.txt_price.setText(fmt.format(price));
holder.txt_cart_name.setText(listData.get(position).getProductName());
//Retrieve topping name
LayoutInflater inflater2 = this.getLayoutInflater();
View vi = inflater2.inflate(R.layout.content_list_drink_detail, null);
TextView toppingName = (TextView)vi.findViewById(R.id.toppingSelected);
holder.txt_item_topping.setText(toppingName.getText().toString());
//Retrieve topping price
TextView toppingPrice = (TextView)vi.findViewById(R.id.toppingSelectedPrice);
holder.txt_topping_price.setText(toppingPrice.getText().toString());
}
这是我的 cart_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
app:cardElevation="4dp"
>
<LinearLayout
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp"
android:orientation="horizontal"
android:layout_gravity="center_vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:orientation="vertical"
android:layout_weight="9"
android:layout_width="0dp"
android:layout_height="wrap_content">
<LinearLayout
android:layout_marginLeft="8dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/cart_item_name"
android:layout_marginLeft="10dp"
android:gravity="center_vertical|start"
android:textAllCaps="true"
android:textStyle="bold"
android:text="Drink 01"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/cart_item_price"
android:layout_marginLeft="10dp"
android:gravity="center_vertical|start"
android:textAllCaps="true"
android:textStyle="italic"
android:text="RM 1.00"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_marginLeft="8dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/cart_item_topping"
android:layout_marginLeft="10dp"
android:gravity="center_vertical|start"
android:textAllCaps="true"
android:textStyle="bold"
android:text="Topping 01"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/cart_item_topping_price"
android:layout_marginLeft="10dp"
android:gravity="center_vertical|start"
android:textAllCaps="true"
android:textStyle="italic"
android:text="RM "
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
<ImageView
android:layout_gravity="center_vertical|end"
android:layout_marginRight="16dp"
android:id="@+id/cart_item_count"
android:layout_width="32dp"
android:layout_height="32dp"
/>
</LinearLayout>
</android.support.v7.widget.CardView>
最佳答案
getLayoutInflater()
只能在有自己的 context
的组件中直接使用,比如 Acitivty
, Application
等等 但 Fragment
没有自己的 context
解决方案:
在 viewHolder
外声明 inflater
并在构造函数内初始化它,并使用 inflater
代替 getLayoutInflater()
。
LayoutInflater inflater;
public CartAdapter(List<Order> listData, Context context) {
this.listData = listData;
this.context = context;
inflater = LayoutInflater.from(context);
}
@Override
public CartViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = inflater.inflate(R.layout.cart_layout,parent,false);
return new CartViewHolder(itemView);
}
现在使用
// remove it , redundant
// LayoutInflater inflater2 = this.getLayoutInflater();
View vi = inflater.inflate(R.layout.content_list_drink_detail,null);
Update
:您正在膨胀一个新 View vi
,它是 TextView
toppingName
和 toppingName
里面没有数据,所以是空的
您可能想从 list
中获取数据,例如 listData.get(position).getQuantity()
// this below code is not needed at all
//LayoutInflater inflater2 = this.getLayoutInflater();
//View vi = inflater2.inflate(R.layout.content_list_drink_detail, null);
//TextView toppingName = (TextView)vi.findViewById(R.id.toppingSelected);
//TextView toppingPrice = (TextView)vi.findViewById(R.id.toppingSelectedPrice);
关于android - 为什么 'getLayoutInflater()' 没有解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47457720/
这个问题在这里已经有了答案: getLayoutInflater() in fragment (5 个答案) 关闭 4 年前。 我正在尝试编写一个应用程序,从在线 MySQL 数据库下载某些事件的数
我想创建一个带有 2 个 TextView 的简单 ListView。原始类:https://github.com/thest1/LazyList/blob/master/src/com/fedorv
此代码属于我的自定义微调器的数组适配器。我在 getLayoutInflater() 方法上收到无法解析方法的错误,我不知道为什么。任何帮助将不胜感激。 public View getCust
需要导入什么或者如何在activity以外的地方调用Layout inflater? public static void method(Context context){ //this do
在 socialNetworksActivity 类中,我有一个方法: public void getResultFromFBPost(String result) { if (result.eq
研究一些(已知是好的)代码我可以看到逻辑如下: if (getContext() instanceof Activity) { inflater=((Activity)getContext
我想在 Fragment 中实现一个警告对话框。 我创建了一个名为 MyDialog 的新类,其中包含: public class MyDialog { public static A
我试图在 Fragment 上的 ListView 中显示我的搜索结果,但它失败了: LayoutInflater inflater = getLayoutInflater(); The method
我可以知道的意思吗 public View getView(int position, View view, ViewGroup parent){ if (view ==nu
我想显示 content_list_drink_details.xml 中的 TextView(配料名称和配料价格)到 cart_layout.xml 的适配器。 但看起来我的 getLayoutIn
当我用下面的代码编译程序时,发生了一个错误。它说 getLayoutInflater ( ) 未定义。我该如何解决? final LayoutInflater inflater = getLayou
我坚持创建自定义适配器。我想在 ListView 内的按钮上设置 setOnClickListener,我发现这个主题看起来不错 how-to-setonclicklistener-on-the-bu
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState
现在,为了填充我的 GridView,我在我的每个 Android Activity (其中大部分)上使用了扩展的 BaseAdapter 类。 为了更易于阅读和维护,我尝试将所有 BaseAdapt
我想在我的 webView 中添加全屏模式 - 用于 YouTube 视频 -。我发现了这个例子 https://stackoverflow.com/a/16179544/5070495 。我已遵循所
tics 有 3 个项目。以下代码创建了 3 个票证项目,但始终设置第一个票证的 TextView 的文本。 public void onSuccess(int i, Header[] headers
我正在尝试使用自定义日期选择器 date picker 但是我在 fragment 中膨胀根布局时遇到了这个错误: public void button_click(View view) {
什么是真正的区别: return context.getLayoutInflater().inflate(R.layout.my_layout, null); Inflate a new view h
简单的“不”回答会让我平静下来。如果有什么不同,那是什么? 最佳答案 没有 只要调用 getLayoutInflater() 的 Activity 或 Window 与调用 getSystemServ
我得到这个异常Attempt to invoke virtual method 'android.view.LayoutInflater android.app.Activity.getLayoutI
我是一名优秀的程序员,十分优秀!