CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: con ben Thanks ricevuti nelle ultime 24 ore
Utente della settimana: bluemask con ben 8 Thanks ricevuti negli ultimi sette giorni
Utente del mese: bluemask con ben 23 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 2 su 2
Discussione:

Listview mostra un solo item, baseadapter

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
    Apr 2014
    Messaggi
    14

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Question

    Listview mostra un solo item, baseadapter

    Ciao a tutti, non riesco proprio a risolvere questo problema, magari voi potete aiutarmi:
    per mostrare gli item di una list view ho creato una classe che estende BaseAdapter:
    x
     
    1
    2
    public class SpeechBubbleAdapter extends BaseAdapter {
    3
    4
        private Context context;
    5
        private ArrayList<HashMap<String,String>> msgMap_al = new ArrayList<HashMap<String,String>>();
    6
        private String msg;
    7
        private String sender;
    8
        private final String KEY_MSG = "message";
    9
        private final String KEY_SENDER = "sender";
    10
        private final String KEY_DATETIME = "datetime";
    11
    12
    13
        public SpeechBubbleAdapter(Context context,ArrayList<HashMap<String,String>> messages){
    14
            this.context=context;
    15
            msgMap_al = messages;
    16
    17
        }
    18
    19
        @Override
    20
        public int getCount() {
    21
            return msgMap_al.size();
    22
        }
    23
    24
        @Override
    25
        public Object getItem(int position) {
    26
            return msgMap_al.get(position).get(KEY_MSG);
    27
        }
    28
    29
        @Override
    30
        public long getItemId(int position) {
    31
            return position;
    32
        }
    33
    34
        class ViewHolder {
    35
            TextView speech_text_view;
    36
            TextView datetime_text_view;
    37
        }
    38
    39
        @Override
    40
        public View getView(int position, View convertView, ViewGroup parent) {
    41
    42
    43
    44
            ViewHolder holder;
    45
            if(convertView == null)
    46
            {
    47
                LayoutInflater inflater = (LayoutInflater)context.getSystemService
    48
                        (Context.LAYOUT_INFLATER_SERVICE);
    49
                convertView = inflater.inflate(R.layout.speech_bubble, parent, false);
    50
            }
    51
    52
            holder = new ViewHolder();
    53
    54
            holder.speech_text_view = (TextView) convertView.findViewById(R.id.message_text_view);
    55
            holder.datetime_text_view = (TextView) convertView.findViewById(R.id.datetime_text_view);
    56
    57
            Log.d("SpeechBubbleAdapter: ","Message: "+msgMap_al.get(position).get(KEY_MSG)+"  |  Datetime: "+msgMap_al.get(position).get(KEY_DATETIME)+"   |   Position: "+position);
    58
            holder.speech_text_view.setText(msgMap_al.get(position).get(KEY_MSG));
    59
            holder.datetime_text_view.setText(msgMap_al.get(position).get(KEY_DATETIME));
    60
    61
            LayoutParams lp = (LayoutParams) holder.speech_text_view.getLayoutParams();
    62
    63
            if(msgMap_al.get(position).get(KEY_SENDER)=="a******@live.it")
    64
            {
    65
                lp.gravity = Gravity.RIGHT;
    66
            }
    67
    68
            else
    69
            {
    70
                lp.gravity = Gravity.LEFT;
    71
            }
    72
            holder.speech_text_view.setLayoutParams(lp);
    73
    74
            return convertView;
    75
        }
    76
    }

    Questo adapter viene utilizzato da questa activity:
    111
     
    1
    public class ChatActivity extends Activity implements LoaderManager.LoaderCallbacks<Cursor>{
    2
    3
        EditText msg_et;
    4
        private String recipient;
    5
        private EditText ed;
    6
        private final String KEY_MSG = "message";
    7
        private final String KEY_SENDER = "sender";
    8
        private final String KEY_RECIPIENT = "recipient";
    9
        private final String KEY_DATETIME= "datetime";
    10
        private SpeechBubbleAdapter sb;
    11
        private ListView lv;
    12
    13
        @Override
    14
        protected void onCreate(Bundle savedInstanceState) {
    15
            super.onCreate(savedInstanceState);
    16
            setContentView(R.layout.chat_activity);
    17
            ed = (EditText) findViewById(R.id.edit_text);
    18
            msg_et = (EditText) findViewById(R.id.edit_text);
    19
            recipient = getIntent().getExtras().getString(new ContactsListFragment().KEY_EMAIL);
    20
            lv =(ListView) findViewById(R.id.chat_list_view);
    21
            Bundle b = new Bundle();
    22
            b.putString(KEY_RECIPIENT,recipient);
    23
            LoaderManager lm = getLoaderManager();
    24
            lm.initLoader(0, b, this);
    25
        }
    26
    27
    28
        @Override
    29
        public boolean onCreateOptionsMenu(Menu menu) {
    30
            // Inflate the menu; this adds items to the action bar if it is present.
    31
            getMenuInflater().inflate(R.menu.chat, menu);
    32
            return true;
    33
        }
    34
    35
        @Override
    36
        public boolean onOptionsItemSelected(MenuItem item) {
    37
            // Handle action bar item clicks here. The action bar will
    38
            // automatically handle clicks on the Home/Up button, so long
    39
            // as you specify a parent activity in AndroidManifest.xml.
    40
            int id = item.getItemId();
    41
            if (id == R.id.action_settings) {
    42
                return true;
    43
            }
    44
            return super.onOptionsItemSelected(item);
    45
    46
        }
    47
    48
    49
        public void onClickSendButton(View v) {
    50
            ContentValues cv = new ContentValues();
    51
            cv.put(SandMessagesProvider.KEY_SENDER, "Caco@caco.it");  // sender = variabile globale
    52
            cv.put(SandMessagesProvider.KEY_RECIPIENT, recipient);
    53
            cv.put(SandMessagesProvider.KEY_DATETIME, FormattedDateTime.getDateTime());
    54
            cv.put(SandMessagesProvider.KEY_TEXT, ed.getText().toString());
    55
            ed.setText("");
    56
            ContentResolver cr = getContentResolver();
    57
            Uri rowUri = cr.insert(SandMessagesProvider.CONTENT_URI, cv);
    58
    59
    60
    61
    62
        }
    63
    64
    65
    66
        @Override
    67
        public Loader<Cursor> onCreateLoader(int id, Bundle args) {
    68
            String[] projection = {SandMessagesProvider.KEY_SENDER,SandMessagesProvider.KEY_DATETIME,SandMessagesProvider.KEY_TEXT};
    69
            String where = SandMessagesProvider.KEY_SENDER+"=?"+" OR " + SandMessagesProvider.KEY_RECIPIENT+"=?";
    70
            String[] whereArgs ={args.getString(KEY_RECIPIENT),args.getString(KEY_RECIPIENT)};
    71
            String sortOrder = SandMessagesProvider.KEY_ID;
    72
    73
            Uri queryUri = SandMessagesProvider.CONTENT_URI;
    74
            CursorLoader cl = new CursorLoader(this, queryUri, projection, where, whereArgs, sortOrder);
    75
    76
            return cl;
    77
        }
    78
    79
        @Override
    80
        public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
    81
            if (data.getCount()>0){
    82
                ArrayList<HashMap<String,String>> al = new ArrayList<HashMap<String, String>>();
    83
    84
                int i=0;
    85
            while (data.moveToNext()){
    86
                //Log.d("ChatActivity","New hashmap "+i);
    87
                HashMap<String,String> hm=new HashMap<String, String>();;
    88
    89
                hm.put(KEY_SENDER,data.getString(0));
    90
                hm.put(KEY_DATETIME,data.getString(1));
    91
                hm.put(KEY_MSG,data.getString(2));
    92
                Log.d("ChatActivity: ","Message: "+hm.get(KEY_MSG)+"  |  Datetime: "+hm.get(KEY_DATETIME));
    93
                al.add(hm);
    94
    95
                i++;
    96
    97
            }
    98
    99
    100
                sb = new SpeechBubbleAdapter(this,al);
    101
                lv.setAdapter(sb);
    102
    103
        }
    104
    105
        }
    106
    107
        @Override
    108
        public void onLoaderReset(Loader<Cursor> loader) {
    109
    110
        }
    111
    }


    Quando lancio l'applicazione nella list view viene mostrato un solo item. Questo è il logcat:
    codice:
    07-21 09:08:36.010      656-656/com.wix.caco85.sand I/ActivityThread﹕ Pub com.wix.caco85.sand.sandcontactsprovider: com.wix.caco85.sand.database.SandContactsProvider
    07-21 09:08:36.044      656-656/com.wix.caco85.sand I/ActivityThread﹕ Pub com.wix.caco85.sand.sandmessagesprovider: com.wix.caco85.sand.database.SandMessagesProvider
    07-21 09:08:36.462      656-659/com.wix.caco85.sand D/dalvikvm﹕ GC_CONCURRENT freed 200K, 2% free 14329K/14599K, paused 8ms+4ms
    07-21 09:08:36.540      656-656/com.wix.caco85.sand D/gralloc_goldfish﹕ Emulator without GPU emulation detected.
    07-21 09:09:00.380      656-656/com.wix.caco85.sand D/ChatActivity:﹕ Message: hey  |  Datetime: 14/7/14 9:34:23
    07-21 09:09:00.380      656-656/com.wix.caco85.sand D/ChatActivity:﹕ Message: ciao caco  |  Datetime: 14/7/14 9:37:43
    07-21 09:09:00.380      656-656/com.wix.caco85.sand D/ChatActivity:﹕ Message: h  |  Datetime: 15/7/14 8:2:32
    07-21 09:09:00.380      656-656/com.wix.caco85.sand D/ChatActivity:﹕ Message: ciaooo  |  Datetime: 15/7/14 8:2:39
    07-21 09:09:00.380      656-656/com.wix.caco85.sand D/ChatActivity:﹕ Message: heyla  |  Datetime: 15/7/14 8:6:29
    07-21 09:09:00.380      656-656/com.wix.caco85.sand D/ChatActivity:﹕ Message: ciao  |  Datetime: 15/7/14 13:31
    07-21 09:09:00.390      656-656/com.wix.caco85.sand D/ChatActivity:﹕ Message: hey  |  Datetime: 15/7/14 13:32
    07-21 09:09:00.450      656-656/com.wix.caco85.sand D/SpeechBubbleAdapter:﹕ Message: hey  |  Datetime: 14/7/14 9:34:23   |   Position: 0
    07-21 09:09:00.460      656-656/com.wix.caco85.sand D/SpeechBubbleAdapter:﹕ Message: hey  |  Datetime: 14/7/14 9:34:23   |   Position: 0
    07-21 09:09:00.460      656-656/com.wix.caco85.sand D/SpeechBubbleAdapter:﹕ Message: hey  |  Datetime: 14/7/14 9:34:23   |   Position: 0
    07-21 09:09:01.150      656-659/com.wix.caco85.sand D/dalvikvm﹕ GC_CONCURRENT freed 65K, 1% free 14718K/14855K, paused 5ms+114ms

  2.  
  3. #2
    Baby Droid


    Registrato dal
    Sep 2013
    Messaggi
    1

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Ho lo stesso problema, è stata trovata una soluzione?

Tag per questa discussione

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