我从我的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;
}
在这里,我正在获取数据库的数据,并通过将数据作为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中的String,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41854307/