CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: megthebest con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: carotix con ben 6 Thanks ricevuti negli ultimi sette giorni
Utente del mese: megthebest con ben 28 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 6 su 6
Discussione:

Recyclerview con due bottoni

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    Jul 2015
    Messaggi
    49

    Ringraziamenti
    4
    Ringraziato 2 volte in 2 Posts
    Predefinito

    Recyclerview con due bottoni

    Salve, vorrei creare un recyclerview con all interno una textview e due bottoni..
    Il mio stato attuale...la recycleview é caricata tramite una query sqlite e visualizza solo la textview con i dati caricati. Ora vorrei inserire due bottoni al suo interno, in modo da ottenere le righe con la textview centrata e i due bottoni.. Uno a sinistra e l altro a destra..sapete aiutarmi?

  2.  
  3. #2
    Androidiani Power User L'avatar di Crotan


    Registrato dal
    Jul 2013
    Località
    Roma
    Messaggi
    1,265
    Smartphone
    Redmi Note 9 Pro

    Ringraziamenti
    401
    Ringraziato 1,445 volte in 626 Posts
    Predefinito

    Ripeto per l'ennesima volta: devi usare un custom adapter.

    Android's RecyclerView and CardView tutorial

  4. #3
    Baby Droid


    Registrato dal
    Jul 2015
    Messaggi
    49

    Ringraziamenti
    4
    Ringraziato 2 volte in 2 Posts
    Predefinito

    l'adapter lho creato.
    x
     
    1
    public class Adapter_principale extends RecyclerView.Adapter<Row_view_holder_principale> {
    2
        Context context;
    3
        ArrayList<Row_principale>itemsList;
    4
    5
        public Adapter_principale(Context context, ArrayList<Row_principale> itemsList) {
    6
            this.context = context;
    7
            this.itemsList = itemsList;
    8
        }
    9
    10
        @<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
    11
        public int getItemCount() {
    12
            if (itemsList == null) {
    13
                return 0;
    14
            } else {
    15
                return itemsList.size();
    16
            }
    17
        }
    18
    19
        @<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
    20
        public Row_view_holder_principale onCreateViewHolder(ViewGroup viewGroup, int position) {
    21
            LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
    22
            View view = inflater.inflate(R.layout.row_principale, null);
    23
            Row_view_holder_principale viewHolder = new Row_view_holder_principale(view);
    24
            return viewHolder;
    25
        }
    26
    27
        @<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
    28
        public void onBindViewHolder(Row_view_holder_principale row_view_holder, int position) {
    29
            Row_principale items = itemsList.get(position);
    30
            row_view_holder.titolo.setText(String.valueOf(items.getTitolo()));
    31
            row_view_holder.numero.setText(String.valueOf(items.getNumero()));
    32
            
    33
            
    34
               }
    35
    36
       
    37
    }

  5. #4
    Androidiani Power User L'avatar di Crotan


    Registrato dal
    Jul 2013
    Località
    Roma
    Messaggi
    1,265
    Smartphone
    Redmi Note 9 Pro

    Ringraziamenti
    401
    Ringraziato 1,445 volte in 626 Posts
    Predefinito

    Ti basta aggiungere le Views di cui necessiti nel layout "row_principale".

  6. #5
    Baby Droid


    Registrato dal
    Jul 2015
    Messaggi
    49

    Ringraziamenti
    4
    Ringraziato 2 volte in 2 Posts
    Predefinito

    ho modificato la view.. ho due textview e due FloatingActionButton
    sono riuscito a caricare la textview con i valori presi tramite una query da una tabella del db
    ora ho dei problemi..
    1)la seconda textView deve essere caricata tramite un'altra query che prende però gli id delle righe inserite tramite la query che carica la prima textview

    questa è la prima query
    1
     
    1
     Cursor r = db.rawQuery("SELECT * FROM contatore",null);

    (r.getString(0)); è l'id che m serve
    items1.setTitolo(r.getString(1)); //quello che deve esserci nella textview1
    mi stampa i risultati nella textview1

    seconda query
    1
     
    1
     final Cursor r = db.rawQuery("SELECT numero FROM promemoria WHERE idcont=? ", new String[]{(r.getString(0))}

    carica seconda textview
    e stampare i dati.


    2)risolto il punto uno come gestisco il click sulle apposite FloatingActionButton e tetxview?
    posto il mio codice.. ps: non cerco qualcuno che mi stenda il codice.. ma che mi aiuti a crearlo.
    activity
    11
     
    1
    2
    3
        
    4
    5
        
    6
        
    7
    8
        
    9
    10
    11


    righe recycleview
    11
     
    1
    2
    3
        
    4
    5
        
    6
    7
        
    8
    9
        
    10
    11


    righe java
    22
     
    1
    2
    public class Row_principale {
    3
        private String titolo;
    4
        private String numero;
    5
    6
        public String getTitolo() {
    7
            return titolo;
    8
        }
    9
    10
        public void setTitolo(String titolo) {
    11
            this.titolo = titolo;
    12
        }
    13
    14
        public String getNumero() {
    15
            return numero;
    16
        }
    17
    18
        public void setNumero(String numero) {
    19
            this.numero = numero;
    20
        }
    21
    22
    }


    Row_view_holder_principale
    11
     
    1
    public class Row_view_holder_principale extends RecyclerView.ViewHolder {
    2
    3
            TextView titolo;
    4
            TextView numero;
    5
    6
            public Row_view_holder_principale(View view) {
    7
                super(view);
    8
                this.titolo = (TextView) view.findViewById(R.id.textViewList);
    9
                this.numero = (TextView) view.findViewById(R.id.numero);
    10
            }
    11
        }

    adapter(ho provato a gestire il click li.. ma h problemi con il db e gli intent
    62
     
    1
    2
    public class Adapter_principale extends RecyclerView.Adapter {
    3
        Context context;
    4
        ArrayListitemsList;
    5
    6
    7
        public Adapter_principale(Context context, ArrayList itemsList) {
    8
            this.context = context;
    9
            this.itemsList = itemsList;
    10
        }
    11
    12
          @<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
    13
        public int getItemCount() {
    14
            if (itemsList == null) {
    15
                return 0;
    16
            } else {
    17
                return itemsList.size();
    18
            }
    19
        }
    20
    21
          @<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
    22
        public Row_view_holder_principale onCreateViewHolder(ViewGroup viewGroup, int position) {
    23
            LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
    24
            View v = inflater.inflate(R.layout.row_principale, null);
    25
            Row_view_holder_principale viewHolder = new Row_view_holder_principale(v);
    26
    27
            TextView textView = (TextView)v.findViewById(R.id.textViewList);
    28
            //click listView(inserisci in nome il valore dell item cliccato.. tramite una query si ottiene l'id.. passo i dati(id e nome) in contatore
    29
            textView.setOnClickListener(new View.OnClickListener() {
    30
                  @<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
    31
                public void onClick(View v) {
    32
                    v.setBackgroundColor(0x8BC7DB); //colore item
    33
                    TextView lblListHeader = (TextView) v.findViewById(R.id.textViewList);
    34
                    String nome = lblListHeader.getText().toString();
    35
                    String[] selectionArg = {nome};
    36
                    Cursor g = db.rawQuery("SELECT _id FROM contatore WHERE titolo = ?", selectionArg);
    37
                    while (g.moveToNext()) {
    38
                        //dati da passare (nome e id della riga premuta) a Contatore
    39
                        String id = g.getString(0);//id
    40
                        intent = new Intent(getApplicationContext(), Contatore.class);
    41
                        String Salsiccia = getPackageName();
    42
                        intent.putExtra(Salsiccia + ".myString", nome);      //inseriamo i dati nell'intent
    43
                        intent.putExtra(Salsiccia + ".myInt", id);
    44
                        startActivity(intent); //facciamo partire la seconda activity
    45
                    }
    46
                }
    47
            });
    48
    49
    50
            return viewHolder;
    51
        }
    52
    53
          @<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
    54
        public void onBindViewHolder(Row_view_holder_principale row_view_holder, int position) {
    55
            Row_principale items = itemsList.get(position);
    56
            row_view_holder.titolo.setText(String.valueOf(items.getTitolo()));
    57
            row_view_holder.numero.setText(String.valueOf(items.getNumero()));
    58
               }
    59
    60
    61
    62
    }

    main java
    64
     
    1
    2
    public class MainActivity extends AppCompatActivity {
    3
                    //Vatiabili Globali
    4
        DbHelper helper =new DbHelper(this);
    5
        SQLiteDatabase db;
    6
    7
        RecyclerView recyclerView;
    8
        ArrayList itemsList = new ArrayList();
    9
        Adapter_principale adapter;
    10
        TextView textView;
    11
        Intent intent; // x passare i dati tra activity
    12
    13
          @<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
    14
        protected void onCreate(Bundle savedInstanceState) {
    15
            super.onCreate(savedInstanceState);
    16
            setContentView(R.layout.activity_main);
    17
                        //variabili
    18
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    19
            setSupportActionBar(toolbar);
    20
            //  getSupportActionBar().setTitle(R.string.app_name);     //Titolo In Toolbar
    21
            db= helper.getReadableDatabase();//sola lettura x fare query
    22
    23
            recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
    24
            recyclerView.setLayoutManager(new LinearLayoutManager(this));
    25
            adapter = new Adapter_principale(MainActivity.this, getTitolo());
    26
            recyclerView.setAdapter(adapter);
    27
            textView = (TextView) findViewById(R.id.textViewList);
    28
    29
    30
    31
    32
            //entra in Activity Add
    33
            FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    34
            fab.setOnClickListener(new View.OnClickListener() {
    35
                  @<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
    36
                public void onClick(View view) {
    37
                    intent = new Intent(getApplicationContext(), Add.class)
    38
                            .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    39
                    startActivity(intent);  //Snackbar.make(view, "Contatore aggiunto con successo!", Snackbar.LENGTH_LONG) .setAction("Action", null).show();
    40
                }
    41
            });
    42
    43
        }
    44
    45
        public ArrayList getTitolo()
    46
        {
    47
    48
            ArrayList it = new ArrayList();
    49
            final SQLiteDatabase db = helper.getReadableDatabase();//sola lettura x fare query
    50
            Cursor r = db.rawQuery("SELECT titolo FROM contatore",null);
    51
            r.moveToFirst();
    52
            for (int i = 0; i < r.getCount(); i++) {
    53
                Row_principale items1 = new Row_principale();
    54
                // (r.getString(1));//numero
    55
                //(r.getString(2));//data
    56
                items1.setTitolo(r.getString(0));
    57
                it.add(items1);
    58
                r.moveToNext();
    59
            }
    60
            return it;
    61
    62
        }
    63
    }
    64


    Crotan spero di non aver commesso errori.
    Ultima modifica di Fabriziocolazzo; 16-10-15 alle 07:54

  7. #6
    Baby Droid


    Registrato dal
    Jul 2015
    Messaggi
    49

    Ringraziamenti
    4
    Ringraziato 2 volte in 2 Posts
    Predefinito

    ho modificato il codice in questo modo ma ottengo un errore
    4
     
    1
    Error:(75, 21) error: method setAdapter in class RecyclerView cannot be applied to given types;
    2
    required: Adapter
    3
    found: Adapter_principale
    4
    reason: actual argument Adapter_principale cannot be converted to Adapter by method invocation conversion


    main
    66
     
    1
    2
    public class MainActivity extends AppCompatActivity {
    3
                    //Vatiabili Globali
    4
    5
        DbHelper helper =new DbHelper(this);
    6
        SQLiteDatabase db;
    7
        RecyclerView recyclerView;
    8
        Intent intent; // x passare i dati tra activity
    9
        Map<Integer, myCustomObject> listp = new TreeMap<>();
    10
        Adapter_principale adapter_principale = new Adapter_principale(this, R.layout.row_principale, listp);
    11
    12
        @<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
    13
        protected void onCreate(Bundle savedInstanceState) {
    14
            super.onCreate(savedInstanceState);
    15
            setContentView(R.layout.activity_main);
    16
                        //variabili
    17
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    18
            setSupportActionBar(toolbar);
    19
            //  getSupportActionBar().setTitle(R.string.app_name);     //Titolo In Toolbar
    20
            db= helper.getReadableDatabase();//sola lettura x fare query
    21
    22
            recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
    23
            recyclerView.setLayoutManager(new LinearLayoutManager(this));
    24
    25
            final Map<Integer, myCustomObject> listp = new TreeMap<>();
    26
            final Adapter_principale adapter_principale = new Adapter_principale(this, R.layout.row_principale, listp);
    27
    28
            //nome ingrediente per salsiccia
    29
            int i=0;
    30
                Cursor r = db.rawQuery("SELECT * FROM contatore",null);
    31
            while(r.moveToNext()) {
    32
                r.moveToNext();
    33
                i++;
    34
                listp.put(i, new myCustomObject(r.getString(1), i));
    35
            }
    36
            int j=0;
    37
            Cursor a = db.rawQuery("SELECT * FROM promemoria WHERE idcont=?", new String[]{r.getString(0)});
    38
            while (a.moveToNext()) {
    39
                j++;
    40
                if(listp.containsKey(j))
    41
                    listp.get(j).setText2(a.getInt(1));
    42
                //  listp.put(2, new myCustomObject( null,a.getInt(0) * ValoreIntero));
    43
    44
            }
    45
            adapter_principale.clear();
    46
            adapter_principale.notifyDataSetChanged();
    47
            adapter_principale.add(listp);
    48
    49
            recyclerView.setAdapter(adapter_principale);
    50
    51
    52
    53
            //entra in Activity Add
    54
            FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    55
            fab.setOnClickListener(new View.OnClickListener() {
    56
                @<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
    57
                public void onClick(View view) {
    58
                    intent = new Intent(getApplicationContext(), Add.class)
    59
                            .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    60
                    startActivity(intent);  //Snackbar.make(view, "Contatore aggiunto con successo!", Snackbar.LENGTH_LONG) .setAction("Action", null).show();
    61
                }
    62
            });
    63
    64
        }
    65
    66
    }


    94
     
    1
    2
    class myCustomObject {
    3
        private String text1;
    4
        private int text2;
    5
    6
        public String getText1(){
    7
    8
            return this.text1;
    9
        }
    10
        public void setText1(String text1){
    11
    12
            this.text1= text1;
    13
        }
    14
    15
        public int getText2(){
    16
            return this.text2;
    17
        }
    18
        public void setText2(int text2){
    19
            this.text2= text2;
    20
        }
    21
    22
        public myCustomObject(String text1, int text2) {
    23
            this.text1 = text1;
    24
            this.text2 = text2;
    25
        }
    26
    27
    28
    }
    29
    30
    public class Adapter_principale extends BaseAdapter {
    31
        private ArrayList mapData;
    32
        Context context;
    33
        int layoutResourceId;
    34
    35
        Holder holder;
    36
    37
        public Adapter_principale(Context context, int layoutResourceId, Map<Integer, myCustomObject> arList) {
    38
            this.layoutResourceId = layoutResourceId;
    39
            this.context = context;
    40
    41
            mapData = new ArrayList();
    42
            mapData.addAll(arList.entrySet());
    43
        }
    44
    45
        @<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
    46
        public int getCount() {
    47
            return mapData.size();
    48
        }
    49
    50
    51
        @<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
    52
        public Map.Entry<Integer, myCustomObject> getItem(int position) {
    53
            return (Map.Entry) mapData.get(position);
    54
        }
    55
    56
        @<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
    57
        public long getItemId(int position) {
    58
            return 0;
    59
        }
    60
    61
        @<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
    62
        public View getView(int position, View view, ViewGroup parent) {
    63
            if(view == null) {
    64
                holder = new Holder();
    65
    66
                LayoutInflater inflater = ((Activity)context).getLayoutInflater();
    67
                view = inflater.inflate(layoutResourceId, parent, false);
    68
    69
                holder.textView = (TextView)view.findViewById(R.id.textViewList);
    70
                holder.textView2 = (TextView)view.findViewById(R.id.numero);
    71
    72
                view.setTag(holder);
    73
            } else {
    74
                holder = (Holder)view.getTag();
    75
            }
    76
    77
            Map.Entry<Integer, myCustomObject> item = getItem(position);
    78
            holder.textView.setText(item.getValue().getText1());
    79
            holder.textView2.setText(String.valueOf(item.getValue().getText2()));
    80
    81
            return view;
    82
        }
    83
        public void add(Map<Integer, myCustomObject> map) {
    84
            mapData.addAll(map.entrySet());
    85
        }
    86
        public void clear() {
    87
            mapData.clear();
    88
        }
    89
    90
    }
    91
    class Holder {
    92
        TextView textView, textView2;
    93
    }
    94

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy