【问题标题】:Update Image from Spinner selection从微调器选择中更新图像
【发布时间】:2019-07-29 18:56:29
【问题描述】:

我被困在这一点上:

我有一个带有 CardView 列表的 RecyclerView。

当一个按钮被按下时,addItem();方法被调用,显然增加了一个项目。

方法如下:

String text = hwtext.getText().toString();
    mList.add(new HomeWork_Item(the.image.I.want, text));
    mAdapter.notifyItemInserted(mList.size());

哪个好用,太棒了!

现在,我添加了一个 Spinner。微调器包含几个主题。假设选择了主题历史记录,我想将 the.image.I.wantaddItem(); 方法更改为可绘制对象中的另一个方法。

我尝试使用 glide 但这不起作用:

public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    String SpinnerText = parent.getItemAtPosition(position).toString();
    Toast.makeText(getContext(), SpinnerText, Toast.LENGTH_SHORT).show();
    if (SpinnerText.equals("History")) {

 Glide.with(getActivity()).load(R.drawable.history).into(R.id.theImageView);

    }

}

注意:只有在按下调用方法来添加它的按钮时才会添加该项目。选择主题后,它应该只准备要在添加项目时使用的图像。

谢谢!

崩溃Logcat:

2019-03-08 14:59:10.328 9808-9808/com.reogen.ssr E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.reogen.ssr, PID: 9808
java.lang.NullPointerException: Argument must not be null
    at com.bumptech.glide.util.Preconditions.checkNotNull(Preconditions.java:31)
    at com.bumptech.glide.util.Preconditions.checkNotNull(Preconditions.java:25)
    at com.bumptech.glide.RequestBuilder.into(RequestBuilder.java:685)
    at com.reogen.ssr.Fragments.Homework.onItemSelected(Homework.java:170)
    at android.widget.AdapterView.fireOnSelected(AdapterView.java:1331)
    at android.widget.AdapterView.dispatchOnItemSelected(AdapterView.java:1320)
    at android.widget.AdapterView.-wrap1(Unknown Source:0)
    at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:1282)
    at android.os.Handler.handleCallback(Handler.java:789)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6938)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

【问题讨论】:

  • 你可以在滑行之后调用 notifyDataSetChanged() 吗?
  • 看起来我做不到
  • 你不能是什么意思
  • 在 if 语句中,在我的“Glide Stuff”之后,notifyDataSetChanged() 不存在,它无效
  • 不能调用mAdapter.notifydatasetchanged()?

标签: java android arrays image updates


【解决方案1】:

创建一个ImageView

ImageView historyImage = findViewById(R.id.historyImage);

然后在你的滑翔中你这样做:

Glide.with(view.getContext()).load(R.drawable.history).into(historyImage);

您将 int 传递给 into,您应该直接传递 ImageView

编辑

把你的代码改成这个

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_homework, container, false);
insert = rootView.findViewById(R.id.insert_text);
    hwtext = rootView.findViewById(R.id.hwinput);
SubjectImage = rootView.findViewById(id.HWImage);

   spinner = rootView.findViewById(R.id.spinner);
   buildView(rootView);
        return rootView;
    }


    public void buildView(View rootView) {
    mRecyclerView = rootView.findViewById(R.id.RecycleHW);
    mRecyclerView.setHasFixedSize(true);
    mManager = new LinearLayoutManager(getActivity());
    mAdapter = new HomeWorkAdapter(mList);

    mRecyclerView.setLayoutManager(mManager);
    mRecyclerView.setAdapter(mAdapter);
}

【讨论】:

  • 再次,java.lang.NullPointerException: Argument must not be null
  • 什么是空的?哪个论点
  • 我不知道,它只是这么说。我想 imageView 是,因为在通过单击按钮创建项目之前没有一个
  • 请用空指针发布 logcat,尝试把 view.getContext().findViewById...
  • 添加了logcat,现在我试试你的建议
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
相关资源
最近更新 更多