gpt4 book ai didi

java - Android:Fragment 中的 Setter 和 RecyclerViewAdapter 中的获取字符串

转载 作者:行者123 更新时间:2023-11-29 19:29:58 26 4
gpt4 key购买 nike

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

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

在这里,我获取数据库的数据,并通过将数据作为 Toast 来测试它是否有效,并且效果很好。

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 中的获取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41854307/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com