亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我的 customAdapter 或 Activity.java 有什么問題?

我的 customAdapter 或 Activity.java 有什么問題?

HUH函數 2022-05-25 15:47:56
我正在開發 RecyclerView 并使用 CustomAdapter 并且我的應用程序運行順利,但我的 ListView 沒有顯示它的內容!我的代碼有什么遺漏或錯誤?我試圖返回 arraylist.size() 并輸入 list.setHasFixedSize 并沒有工作!潛在所有者_listview.java(活動類)public class prospectowner_listview extends AppCompatActivity {    RecyclerView list;    ArrayList <com.example.android.e7gzlykora.owner> ownerlist = new ArrayList <>();    private DatabaseReference mFirebaseDatabase;    private FirebaseDatabase mFirebaseInstance;    owner owner;    customAdapter adapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.prospectowner_listview);        list = findViewById(R.id.list);        LinearLayoutManager manager = new LinearLayoutManager(this);        list.setLayoutManager(manager);        list.setHasFixedSize(true);        manager.setOrientation(LinearLayoutManager.VERTICAL);        adapter = new customAdapter(prospectowner_listview.this,ownerlist);        mFirebaseInstance = FirebaseDatabase.getInstance();        mFirebaseDatabase = mFirebaseInstance.getReference("owners");        mFirebaseDatabase.addValueEventListener(new ValueEventListener() {            @Override            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {                for (DataSnapshot data: dataSnapshot.getChildren()){                    owner o = data.getValue(owner.class);                    ownerlist.add(o);                }                list.setAdapter(adapter);            }            @Override            public void onCancelled(@NonNull DatabaseError databaseError) { }        });    }}客戶適配器.javapublic class customAdapter extends RecyclerView.Adapter<customAdapter.MyViewHolder>{    private final ArrayList<owner> ownerlist;    private final Context mContext;    public customAdapter(Context c , ArrayList<owner> p) {        this.mContext = c;        this.ownerlist = new ArrayList <>();    }
查看完整描述

4 回答

?
紅顏莎娜

TA貢獻1842條經驗 獲得超13個贊

我認為問題來自您的適配器,請更改您的適配器代碼,如下所示:


public class customAdapter extends RecyclerView.Adapter<customAdapter.MyViewHolder>{


    private ArrayList<owner> ownerlist;

    private Context mContext;


    public customAdapter(Context c , ArrayList<owner> p) {

        this.mContext = c;

        this.ownerlist = p;

    }


    @NonNull

    @Override

    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int 

    viewType) {

        return new MyViewHolder(LayoutInflater.from(mContext).inflate(R.layout.prospectowners,parent,false));

    }


    @Override

    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {

        owner owner = ownerlist.get(position);


        holder.name.setText(owner.getName());

        holder.field.setText(owner.getFieldname());

        holder.mobile.setText(owner.getMobile());

        holder.address.setText(owner.getAddress());

        holder.cost.setText(owner.getCost());

    }


    @Override

    public int getItemCount() {

        return ownerlist.size();

    }


    public void addData(ArrayList<owner> newData){

        this.ownerlist.addAll(newData);

        notifyOnDataSetChanged();

    }


    public class MyViewHolder extends RecyclerView.ViewHolder {

        public TextView name;

        public TextView field;

        public TextView mobile;

        public TextView address;

        public TextView cost;


       public MyViewHolder(View itemView) {

            super(itemView);

            this.name = itemView.findViewById(R.id.name);

            this.field =  itemView.findViewById(R.id.fieldName);

            this.mobile =  itemView.findViewById(R.id.mobileowner);

            this.address =  itemView.findViewById(R.id.address);

            this.cost =  itemView.findViewById(R.id.cost);

        }

    }

}

然后像這樣調用方法addData:


@Override

            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                for (DataSnapshot data: dataSnapshot.getChildren()){

                    owner o = data.getValue(owner.class);

                    ownerlist.add(o);

                }

                list.setAdapter(adapter);

                adapter.addData(ownerlist);


            }

順便說一句,實際上您可以在偵聽器之外設置適配器


UPDATE(此更新設置適配器值的位置默認為空數據,然后在監聽觸發時填充)


public class customAdapter extends RecyclerView.Adapter<customAdapter.MyViewHolder>{


    private ArrayList<owner> ownerlist;

    private Context mContext;


    public customAdapter(Context c , ArrayList<owner> p) {

        this.mContext = c;

        this.ownerlist = new Arraylist<>();

    }


    @NonNull

    @Override

    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int 

    viewType) {

        return new MyViewHolder(LayoutInflater.from(mContext).inflate(R.layout.prospectowners,parent,false));

    }


    @Override

    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {

        owner owner = ownerlist.get(position);


        holder.name.setText(owner.getName());

        holder.field.setText(owner.getFieldname());

        holder.mobile.setText(owner.getMobile());

        holder.address.setText(owner.getAddress());

        holder.cost.setText(owner.getCost());

    }


    @Override

    public int getItemCount() {

        return ownerlist.size();

    }


    public void addData(ArrayList<owner> newData){

        this.ownerlist.addAll(newData);

        notifyOnDataSetChanged();

    }


    public class MyViewHolder extends RecyclerView.ViewHolder {

        public TextView name;

        public TextView field;

        public TextView mobile;

        public TextView address;

        public TextView cost;


       public MyViewHolder(View itemView) {

            super(itemView);

            this.name = itemView.findViewById(R.id.name);

            this.field =  itemView.findViewById(R.id.fieldName);

            this.mobile =  itemView.findViewById(R.id.mobileowner);

            this.address =  itemView.findViewById(R.id.address);

            this.cost =  itemView.findViewById(R.id.cost);

        }

    }

}


public class prospectowner_listview extends AppCompatActivity {


    RecyclerView list;

    ArrayList <com.example.android.e7gzlykora.owner> ownerlist = new ArrayList <>();

    private DatabaseReference mFirebaseDatabase;

    private FirebaseDatabase mFirebaseInstance;

    owner owner;

    customAdapter adapter;


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.prospectowner_listview);


        list = findViewById(R.id.list);

        LinearLayoutManager manager = new LinearLayoutManager(this);

        list.setLayoutManager(manager);

        list.setHasFixedSize(true);

        manager.setOrientation(LinearLayoutManager.VERTICAL);

        adapter = new customAdapter(prospectowner_listview.this,ownerlist);

        list.setAdapter(adapter);


        mFirebaseInstance = FirebaseDatabase.getInstance();

        mFirebaseDatabase = mFirebaseInstance.getReference("owners");


        mFirebaseDatabase.addValueEventListener(new ValueEventListener() {

            @Override

            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                for (DataSnapshot data: dataSnapshot.getChildren()){

                    owner o = data.getValue(owner.class);

                    ownerlist.add(o);

                }

                adapter.addData(ownerlist);

            }


            @Override

            public void onCancelled(@NonNull DatabaseError databaseError) { }

        });

    }

}



查看完整回答
反對 回復 2022-05-25
?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

在適配器中創建新功能:


public void addData(List<Owner> owners){

 this.ownerList = owners;

 notifyOnDataSetChanged();

}

并在onDataChange通話中:


adapter.addData(owners);


查看完整回答
反對 回復 2022-05-25
?
月關寶盒

TA貢獻1772條經驗 獲得超5個贊

數組列表始終為空,因為您初始化為新列表的適配器構造函數。請檢查一下


http://img1.sycdn.imooc.com//628ddf610001f8bf06140192.jpg

查看完整回答
反對 回復 2022-05-25
?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

試試這個,

在您的活動課程中更改

list.setAdapter(adapter)

list.setAdapter(new customAdapter(prospectowner_listview.this, ownerlist));


查看完整回答
反對 回復 2022-05-25
  • 4 回答
  • 0 關注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號