2017-07-02 7 views
0

Mein Adapter ist nicht auf Listenansicht festgelegt. Im Logcat ist kein Fehler und in der Liste befinden sich Daten.Adapter nicht auf Listenansicht Android

 lv = (ListView) vi.findViewById(R.id.list); 


     // Get a reference to our posts 
     final FirebaseDatabase database = FirebaseDatabase.getInstance(); 
     DatabaseReference ref = database.getReference().child("chatusers"); 
     urlList = new ArrayList<List>(); 

     final ProgressDialog Dialog = new ProgressDialog(getActivity()); 
     Dialog.setMessage("Please wait..."); 
     Dialog.show(); 
// Attach a listener to read the data at our posts reference 
     ref.addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       String chatwithname, foodname, foodimage; 
       for (DataSnapshot messageSnapshot : dataSnapshot.getChildren()) { 


        Log.d("chatwithname", messageSnapshot.child("chatwithname").getValue().toString()); 
        chatwithname = messageSnapshot.child("chatwithname").getValue().toString(); 
        foodname = messageSnapshot.child("foodname").getValue().toString(); 

        foodimage = messageSnapshot.child("foodimage").getValue().toString(); 

        Log.d("chatusers", chatwithname + "" + foodname + "" + foodimage); 
        List list1 = Arrays.asList(chatwithname, foodname, foodimage); 
        urlList.add(list1); 
        Log.d("urlList", urlList.toString()); 
       } 
       chatusersAdapter chat = new chatusersAdapter(
         getActivity(),urlList); 

       lv.setAdapter(chat); 
       Dialog.hide(); 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 
       System.out.println("The read failed: " + databaseError.getCode()); 
      } 
     }); 

Meine Adapterklasse

public class chatusersAdapter extends ArrayAdapter<List> { 
    private final Context context; 
    List<List> DialogList = new ArrayList<List>(); 


    public chatusersAdapter(Context context, List<List> values) { 
     super(context, R.layout.chatusers_list, values); 
     this.context = context; 
     this.DialogList = values; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     LayoutInflater inflater = (LayoutInflater) context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     Log.d("getview","getview"); 

     final int i=position; 

     List dialog = DialogList.get(i); 
     Log.d("chatwithusername", dialog.get(0).toString()); 

     ViewHolder holder; 
     ImageView imageViews; 
     if (convertView == null) { 
      LayoutInflater layoutInflator = LayoutInflater.from(getContext()); 
      convertView = layoutInflator.inflate(R.layout.chatusers_list, null); 
      holder = new ViewHolder(); 

      holder.chat_with_user = (TextView) convertView.findViewById(R.id.chat_with_user); 
      holder.item_name = (TextView) convertView.findViewById(R.id.item_name); 

      holder.img_product = (ImageView) convertView.findViewById(R.id.img_product); 


      convertView.setTag(holder); 
     } 

     holder = (ViewHolder) convertView.getTag(); 
     holder.chat_with_user.setText(dialog.get(0).toString()); 
     holder.item_name.setText(dialog.get(1).toString()); 
     Glide.with(context).load(dialog.get(2).toString()).into(holder.img_product); 

     return convertView; 
    } 
    @Override 
    public int getCount() { 
     Log.d("asifa",String.valueOf(DialogList.size())); 
     return DialogList.size(); 
    } 
    static class ViewHolder { 

     ImageView img_product; 
     TextView item_name; 
     TextView chat_with_user; 
    } 


} 

Die Liste im Protokoll angezeigt wird, gibt Daten in der Liste ist, aber es ist nicht zur Listenansicht einstellen. Das Problem ist hier

`chatusersAdapter chat = new chatusersAdapter(getActivity(),urlList); lv.setAdapter(chat);` 

Der Adapter wird nicht aufgerufen. Kann jemand bitte helfen?

+0

Sie versuchen, einige Stützpunkte Einstellung sollte zu überprüfen, ob OnDataChange wirklich aufgerufen wird, es es ist die for-Schleife eintritt, wenn UrlList tatsächlich mit bevölkert wird Daten, wenn getView in Ihrem Adapter aufgerufen wird. Das würde ich tun. – Tharkius

+0

urlList ist ausgefüllt. aber getView wird nicht aufgerufen. – asifa

Antwort

0

Sie getCount() Methode des Adapters wie folgt implementieren sollten:

@Override 
public int getCount() { 
    return DialogList.size(); 
} 
+0

Nein, es funktioniert auch nicht nach dem Hinzufügen der getCount-Methode. Das Problem ist hier chatusersAdapter chat = new chatusersAdapter ( getActivity(), urlList); lv.setAdapter (Chat); – asifa

Verwandte Themen