有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何从字符串中获取字符串。单击时适配器类中的xml方法

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

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);
                }
            }
        });

        }
    }
}

共 (2) 个答案

  1. # 1 楼答案

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

    替换以下行

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

    以下是我的看法

    String url = v.getContext().getResources().getString(R.string.song);
    
  2. # 2 楼答案

    您还可以在Kotlin的apply方法中使用TextView的上下文

    Kotlin:

    textView.apply {
        context.resources.getString(R.string.your_string)
    }