tout en essayant d'utiliser recyclerview, je ne peux pas obtenir le contenu dans l'objet dans le support de vue

bouton :

Je suis en train d'utiliser recyclerview et je suis en train de concevoir la méthode « setText » en nombre d'utilisation de viewholder dans le paramètre de l'élément.

Le problème est que quand je mets « item.getNumber () » dans l'application de la méthode setText ne fonctionne pas. Je ne sais pas pourquoi quand je mets chaîne juste méthode a pas de problème et de mettre « item.getNumber () » ont problème sans message d'erreur.

adaptateur:

public class adapter extends RecyclerView.Adapter<adapter.ViewHolder> {
    ArrayList<data> items=new ArrayList<data>();

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        LayoutInflater inflater=LayoutInflater.from(parent.getContext());
        View itemView= inflater.inflate(R.layout.itemlayout, parent,false);
        return new ViewHolder(itemView);
    } 

    public void additem(data item){
        items.add(item);
    }

    @Override
    public void onBindViewHolder(@NonNull adapter.ViewHolder holder, int position) {
        data item=items.get(position);
        holder.setText(item);
    }

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

    static class ViewHolder extends RecyclerView.ViewHolder {
        TextView textView;
        EditText editText;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            textView = itemView.findViewById(R.id.textView);
            editText = itemView.findViewById(R.id.editText);
        }

        public void setText(data item) {
            textView.setText(item.getNumber());
            editText.setHint(item.getSentences());
        }
    }
}

MainActivity:

public class MainActivity extends AppCompatActivity {
    static int num = 6;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        RecyclerView recyclerView = findViewById(R.id.recyclerview);
        adapter adapter1 = new adapter();
        for (int i = 0; i < num; i++) {
            adapter1.additem(new data("sentences", i + 1));
        }
        recyclerView.setAdapter(adapter1);
        LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
        recyclerView.setLayoutManager(layoutManager);
    }
}

data.java:

public class data {
    String sentences = null;
    int number;

    public int getNumber() {
        return number;
    }

    public void setNumber(int number) {
        this.number = number;
    }

    public data(String sentences, int number) {
        this.sentences = sentences;
        this.number = number;
    }

    public String getSentences() {
        return sentences;
    }

    public void setSentences(String sentences) {
        this.sentences = sentences;
    }
}
P. I:

Le problème est que votre getNumber()méthode retourne int:

public int getNumber() {
    return number;
}

Il existe deux versions différentes de TextView.setText(), qui accepte Stringet qui accepte un int. La version qui accepte un intattend un identifiant de ressource de chaîne (comme R.string.foo), et il ne peut pas dire que vous êtes juste essayer d'afficher un numéro.

Modifiez votre setText()appel afin qu'il ressemble à ceci:

    textView.setText("" + item.getNumber());

En utilisant "" + item.getNumber(), vous assurez - vous que vous appelez la version setText()qui accepte un String, et cela signifie que vous obtenez pour afficher le numéro que vous vous attendez.

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=277511&siteId=1
conseillé
Classement