本文介绍了如何从click方法的适配器类中的string.xml中获取字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我实现下面的单击 if(postion == 1)中的代码时,我想在on click方法的视图持有器中的适配器类中获取字符串,我的应用程序崩溃.

I want to get string in my adapter class on view holder in on click method my app crash when i implement the code write below in on click if(postion==1).

public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder>{

    private Context context;
    String SongURL;
    private String[] data;
    public Adapter(String[] data){
        this.data = data;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        View view = inflater.inflate(R.layout.activity_list_item,parent,false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
        String title = data[position];
        holder.text.setText(title);
    }

    @Override
    public int getItemCount() {
        return data.length;
    }

    public class ViewHolder extends RecyclerView.ViewHolder{

        ImageView img;
        TextView text;

        public ViewHolder(final View itemView) {
            super(itemView);
            img = (ImageView) itemView.findViewById(R.id.image1);
            text = (TextView) itemView.findViewById(R.id.text1);
            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    int postion =getAdapterPosition();
                    if (postion==0){
                        String url = "http://sound41.songsbling.link/2016/english-songs/loud-rihanna/12%20-%20Love%20The%20Way%20You%20Lie%20Part%20I%20Bonus%20From%20Us%20%20-%20Loud%20-%20[SongsPK.city].mp3";
                        Intent intent = new Intent(v.getContext(),player.class);
                        intent.putExtra("url",url);
                        v.getContext().startActivity(intent);
                    }
                    if (postion==1){

                        // *This code crashes the app*
                        String url=Resources.getSystem().getString(R.string.song);

                    Intent intent = new Intent(v.getContext(),player.class);
                    intent.putExtra("url",url);
                    v.getContext().startActivity(intent);
                }
            }
        });

        }
    }
}

推荐答案

如果您查看文档中,您会看到 Resources.getSystem().getStrings 将为您提供系统范围的字符串,而不是您应用程序中的字符串( strings.xml ).

If you look at the docs you'll see that Resources.getSystem().getStrings will provide you with system wide strings, not the ones in your application (strings.xml).

替换下面的行

String url = Resources.getSystem().getString(R.string.song);

具有以下内容.

String url = v.getContext().getResources().getString(R.string.song);

这篇关于如何从click方法的适配器类中的string.xml中获取字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-20 22:59