我从我的String数据库中获得一个MySQL,它工作正常。在获取数据后,我试图在Setter中设置数据,并在我的RecyclerAdapter中填充获取的数据,以将其作为列表输出,但是它将无法工作。
唯一有效的方法是从我的数据库中获取数据并设置设置器,之后它将不起作用,不知道为什么。

public ArrayList<NewsData> parseJSON(String result) {
    ArrayList<NewsData> newsData = new ArrayList<NewsData>();
    try {
        JSONArray jArray = new JSONArray(result);
        for (int i = 0; i < jArray.length(); i++) {
            JSONObject json_data = jArray.getJSONObject(i);
            NewsData nd = new NewsData();
            nd.setTitle(json_data.getString("title"));

            Toast.makeText(getActivity(), nd.getTitle(), Toast.LENGTH_SHORT).show();
            newsData.add(nd);
        }
    } catch (JSONException e) {
        Log.e("log_tag", "Error parsing data " + e.toString());
    }

    return newsData;
}


在这里,我正在获取数据库的数据,并通过将数据作为Toa​​st进行测试来测试其是否工作正常。

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

    private Context context;

    class ViewHolder extends RecyclerView.ViewHolder {

        public TextView itemTitle;
        public TextView holeText;

        public ViewHolder(final View itemView) {
            super(itemView);
            itemTitle = (TextView) itemView.findViewById(R.id.title_cView);
            holeText = (TextView) itemView.findViewById(R.id.text);

            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    context = itemView.getContext();
                }
            });
        }
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        View v = LayoutInflater.from(viewGroup.getContext())
                .inflate(R.layout.layout_cardviewhome, viewGroup, false);
        ViewHolder viewHolder = new ViewHolder(v);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
    }

    @Override
    public int getItemCount() {
        return 2;
    }
}


这是我的适配器,我已经尝试过一些方法,但是它们无法正常工作,也许你们中的一个可以在这里帮助我。所以我想将MySQL的数据添加到RecyclerView。 (我在“ parseJSON”中获得的数据)

当我删除所有错误并无法正常工作时,我的适配器几乎快用完了

我希望你能听懂我的英语,这不是很好。但总而言之,感谢您尝试提供的帮助:-)

最佳答案

我猜您应该将newsData作为参数传递给适配器构造函数。在onBindViewHolder中,您可以通过从项目中获取来设置TextViews信息。例:

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

    private Context context;
    private ArrayList<NewsData> newsData;

    public HomeRecyclerAdapter (ArrayList<NewsData> newsData, Context context) {
       this.newsData = newsData;
       this.context = context;
    }

    class ViewHolder extends RecyclerView.ViewHolder {

        public TextView itemTitle;
        public TextView holeText;

        public ViewHolder(final View itemView) {
            super(itemView);
            itemTitle = (TextView) itemView.findViewById(R.id.title_cView);
            holeText = (TextView) itemView.findViewById(R.id.text);

            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    context = itemView.getContext();
                }
            });
        }
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        View v = LayoutInflater.from(viewGroup.getContext())
                .inflate(R.layout.layout_cardviewhome, viewGroup, false);
        ViewHolder viewHolder = new ViewHolder(v);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        NewsData thisNewsData = newsData.get(position);

        holder.itemTitle.setText(thisNewsData.getItemTitle());
        holder.holeText.setText(thisNewsData.getHoleText());
    }

    @Override
    public int getItemCount() {
        return newsDataArray.size();
    }
}


如果出现问题,请进行相应调整,并告诉我是否有帮助。

关于java - Android:Fragment中的Setter和RecyclerViewAdapter中的String,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41854307/

10-11 04:34