recyclerview列表未在android中显示
Hi在下面的代码中,值am将值添加到帐户\ U名称,然后使用该适配器执行设置适配器。服务器将收到响应,但值不会添加到列表中,列表也会显示 用于显示,使用recyclerview显示值 谁能帮我一下,哪里出了错 错误:recyclerview列表未在android中显示,android,android-recyclerview,Android,Android Recyclerview,Hi在下面的代码中,值am将值添加到帐户\ U名称,然后使用该适配器执行设置适配器。服务器将收到响应,但值不会添加到列表中,列表也会显示 用于显示,使用recyclerview显示值 谁能帮我一下,哪里出了错 错误: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.LayoutInflater.inflate(int, android.view.Vie
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.LayoutInflater.inflate(int, android.view.ViewGroup, boolean)' on a null object reference
at com.genworks.oppm.Adapter.MyAdapter.onCreateViewHolder(MyAdapter.java:32)
at com.genworks.oppm.Adapter.MyAdapter.onCreateViewHolder(MyAdapter.java:19)
更新代码:
Activity.java:
for(SyncBlocks syncBlocks1:syncBlocks){
String label=syncBlocks1.getLabel();
ArrayList<SynFields> synFields=syncBlocks1.getFields();
ArrayList<SynFields> jsonArray=syncBlocks1.getFields();
for(SynFields synFields1:synFields){
String name=synFields1.getName();
Object values = synFields1.getValue().toString();
try {
if (values instanceof JSONObject) {
JSONObject jsonObject1 = new
JSONObject(String.valueOf(synFields1.getValue()));
String value=jsonObject1.getString("value");
}else if (values instanceof String) {
//here, you get string
String value = synFields1.getValue().toString();
//account_name.addAll(value);
String value_names= String.valueOf(synFields1.getValue());
// Log.e("account_name", String.valueOf(account_name.add(value)));
account_name.add(value_names);
//account_name.add(value);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
myAdapter = new MyAdapter(getContext(),account_name);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
recyclerView.setAdapter(myAdapter);
}
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
private LayoutInflater inflater;
private Context mContext;
private ArrayList<String> mSynFields=new ArrayList<>();
public MyAdapter(Context context, ArrayList<String> synFieldsArrayList) {
mContext=context;
mSynFields=synFieldsArrayList;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.fragment_account, parent, false);
MyViewHolder holder = new MyViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
holder.name.setText(mSynFields.get(position));
}
@Override
public int getItemCount() {
return mSynFields.size();
}
class MyViewHolder extends RecyclerView.ViewHolder{
TextView country, name, city;
ImageView iv;
public MyViewHolder(View itemView) {
super(itemView);
country = (TextView) itemView.findViewById(R.id.headingText);
name = (TextView) itemView.findViewById(R.id.subHeaderText);
city = (TextView) itemView.findViewById(R.id.subHeadingText);
}
}
}
for(SyncBlocks syncBlocks1:SyncBlocks){
String label=syncBlocks1.getLabel();
ArrayList synFields=syncBlocks1.getFields();
ArrayList jsonArray=syncBlocks1.getFields();
用于(SynFields synFields1:SynFields){
String name=synFields1.getName();
对象值=synFields1.getValue().toString();
试一试{
if(值instanceof JSONObject){
JSONObject JSONObject 1=新建
JSONObject(String.valueOf(synFields1.getValue());
字符串值=jsonObject1.getString(“值”);
}else if(字符串实例的值){
//给,你拿绳子
字符串值=synFields1.getValue().toString();
//账户名称。addAll(值);
String value_names=String.valueOf(synFields1.getValue());
//Log.e(“account_name”,String.valueOf(account_name.add(value)));
帐户名称。添加(值名称);
//账户名称。增加(价值);
}
}捕获(JSONException e){
e、 printStackTrace();
}
}
myAdapter=新的myAdapter(getContext(),帐户名称);
setLayoutManager(新的LinearLayoutManager(getContext(),LinearLayoutManager.VERTICAL,false));
recyclerView.setAdapter(myAdapter);
}
MyAdapter.java:
for(SyncBlocks syncBlocks1:syncBlocks){
String label=syncBlocks1.getLabel();
ArrayList<SynFields> synFields=syncBlocks1.getFields();
ArrayList<SynFields> jsonArray=syncBlocks1.getFields();
for(SynFields synFields1:synFields){
String name=synFields1.getName();
Object values = synFields1.getValue().toString();
try {
if (values instanceof JSONObject) {
JSONObject jsonObject1 = new
JSONObject(String.valueOf(synFields1.getValue()));
String value=jsonObject1.getString("value");
}else if (values instanceof String) {
//here, you get string
String value = synFields1.getValue().toString();
//account_name.addAll(value);
String value_names= String.valueOf(synFields1.getValue());
// Log.e("account_name", String.valueOf(account_name.add(value)));
account_name.add(value_names);
//account_name.add(value);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
myAdapter = new MyAdapter(getContext(),account_name);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
recyclerView.setAdapter(myAdapter);
}
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
private LayoutInflater inflater;
private Context mContext;
private ArrayList<String> mSynFields=new ArrayList<>();
public MyAdapter(Context context, ArrayList<String> synFieldsArrayList) {
mContext=context;
mSynFields=synFieldsArrayList;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.fragment_account, parent, false);
MyViewHolder holder = new MyViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
holder.name.setText(mSynFields.get(position));
}
@Override
public int getItemCount() {
return mSynFields.size();
}
class MyViewHolder extends RecyclerView.ViewHolder{
TextView country, name, city;
ImageView iv;
public MyViewHolder(View itemView) {
super(itemView);
country = (TextView) itemView.findViewById(R.id.headingText);
name = (TextView) itemView.findViewById(R.id.subHeaderText);
city = (TextView) itemView.findViewById(R.id.subHeadingText);
}
}
}
公共类MyAdapter扩展了RecyclerView.Adapter{
私人充气机;
私有上下文;
private ArrayList mSynFields=new ArrayList();
公共MyAdapter(上下文上下文,ArrayList synFieldsArrayList){
mContext=上下文;
mSynFields=synFieldsArrayList;
}
@凌驾
公共MyViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图=充气机。充气(R.layout.fragment\u帐户,父项,false);
MyViewHolder=新的MyViewHolder(视图);
报税表持有人;
}
@凌驾
公共无效onBindViewHolder(MyViewHolder,int位置){
holder.name.setText(mSynFields.get(position));
}
@凌驾
public int getItemCount(){
返回mSynFields.size();
}
类MyViewHolder扩展了RecyclerView.ViewHolder{
TextView国家、名称、城市;
ImageView iv;
公共MyViewHolder(查看项目视图){
超级(项目视图);
country=(TextView)itemView.findViewById(R.id.headingText);
name=(TextView)itemView.findViewById(R.id.subHeaderText);
city=(TextView)itemView.findViewById(R.id.subHeadingText);
}
}
}
将以下几行放在
for
循环的外部,并将整个列表作为循环内部构建的适配器的参数:
myAdapter = new MyAdapter(getContext(),account_name));
recyclerView.setAdapter(myAdapter);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
除上述内容外,您正在传递类型为ArrayList
的account\u name
,而在适配器中,构造函数需要类型为ArrayList
的synFieldsArrayList
。两者必须是同一类型。更改适配器或活动以确保两者的类型相同。在您的
MyViewHolder
构造函数中,添加:
Context context = parent.getContext();
LayoutInflater inflater = LayoutInflater.from(context);
View view = inflater.inflate(R.layout.fragment_account, parent, false);
将代码更改为
ArrayList<SynFields> account_name=new ArrayList();
String label=syncBlocks1.getLabel();
ArrayList<SynFields> synFields=syncBlocks1.getFields();
ArrayList<SynFields> jsonArray=syncBlocks1.getFields();
for(SynFields synFields1:synFields){
String name=synFields1.getName();
Object values = synFields1.getValue();
try {
if (values instanceof JSONObject) {
JSONObject jsonObject1 = new
JSONObject(String.valueOf(synFields1.getValue()));
}else if (values instanceof String) {
//here, you get string
String value = String.valueOf(synFields1.getValue());
account_name.add(value);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
myAdapter = new MyAdapter(getContext(),account_name);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
recyclerView.setAdapter(myAdapter);
ArrayList account_name=new ArrayList();
String label=syncBlocks1.getLabel();
ArrayList synFields=syncBlocks1.getFields();
ArrayList jsonArray=syncBlocks1.getFields();
用于(SynFields synFields1:SynFields){
String name=synFields1.getName();
对象值=synFields1.getValue();
试一试{
if(值instanceof JSONObject){
JSONObject JSONObject 1=新建
JSONObject(String.valueOf(synFields1.getValue());
}else if(字符串实例的值){
//给,你拿绳子
String value=String.valueOf(synFields1.getValue());
账户名称。增加(价值);
}
}捕获(JSONException e){
e、 printStackTrace();
}
}
myAdapter=新的myAdapter(getContext(),帐户名称);
setLayoutManager(新的LinearLayoutManager(getContext(),LinearLayoutManager.VERTICAL,false));
recyclerView.setAdapter(myAdapter);
之所以出现此错误,是因为您从null
引用(充气器
)调用了充气
方法
您必须初始化充气机
,如下所示
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
inflater = LayoutInflater.from(parent.getContext()); // add this line.
//or you can do like below
// View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.fragment_account, parent, false);
View view = inflater.inflate(R.layout.fragment_account, parent, false);
MyViewHolder holder = new MyViewHolder(view);
return holder;
}
哪个是?发布一些描述请看我更新的代码中的帐户名显示错误顺便说一下,这里有3个右括号:
newmyadapter(getContext(),account\u name.add(value))代码>。应该只有两个。显示的错误是什么?在活动的哪个函数中触发此代码?声明为ArrayList的帐户名请参阅更新的答案。在适配器中发送的列表类型与接受的列表类型之间存在差异。首先通过在列表变量中循环存储数据信息,然后在循环外部首先确保您的recyclerview