2017-10-05 4 views
0

Je suis actuellement aux prises avec une fonction que je souhaite avoir dans mon application. Les revenus des utilisateurs sont affichés dans un ListView. Il existe deux types de revenus, le «revenu» normal et les «autres revenus», qui sont sélectionnés dans l'application lorsque l'utilisateur soumet le revenu à une base de données SQLite qu'il ou elle reçoit. Maintenant - je veux présenter les différents revenus dans un ListView avec une image dans le ListView par rapport au type de catégorie (deux types de catégorie de revenu - «revenu» et «autre revenu».)Adaptateur Android personnalisé - Définition d'une image relative aux informations dans Listview

Je ne peux pas comprendre comment je devrait le faire ... pouvez-vous faire une déclaration de mise en circuit d'une sorte !? mon XML pour le ListView personnalisé ressemble à ceci:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="horizontal" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:weightSum="100"> 

    <ImageView 
     android:orientation="vertical" 
     android:layout_width="48dp" 
     android:layout_height="48dp" 
     android:gravity="center_vertical" 
     android:id="@+id/icon1"/> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="220dp" 
     android:layout_height="48dp" 
     android:layout_weight="33.3"> 

     <TextView 
      android:text="TextView1" 
      android:textSize="18dp" 
      android:gravity="center_vertical" 
      android:layout_width="wrap_content" 
      android:layout_height="30dp" 
      android:id="@+id/text1"/> 

     <TextView 
      android:text="Textview2" 
      android:textSize="14dp" 
      android:gravity="center_vertical" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:="@id/text2"/> 

    </LinearLayout> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="48dp" 
     android:orientation="vertical"> 

     <TextView 
      android:text="Textview3" 
      android:textSize="16dp" 
      android:layout_width="wrap_content" 
      android:layout_height="48dp" 
      android:layout_gravity="" 
      android:gravity="center_vertical" 
      android:id="@+id/text3"/> 

    </LinearLayout> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="48dp" 
     android:layout_height="48dp"> 

     <ImageView 
      android:orientation="vertical" 
      android:layout_width="48dp" 
      android:layout_height="48dp" 
      android:gravity="center_vertical" 
      android:id="@+id/icon2"/> 


    </LinearLayout> 

</LinearLayout> 

Et mon AdapterClass ressemble à ceci:

public class CustomIncomeListAdapter extends ArrayAdapter<IncomeModel> { 

    private ArrayList<IncomeModel> incomeList; 
    private Activity context; 
    private ViewHolder viewHolder; 
    int[] incomeIcon = {R.drawable.income, R.drawable.otherincome}; 
    int[] forwardIcon = {R.drawable.forward}; 

    public CustomIncomeListAdapter(Activity context, int[] incomeIcon, ArrayList<IncomeModel> incomeList) { 
     super(context, R.layout.adapter_view_layout, incomeList); 
     this.incomeList = incomeList; 
     this.context = context; 
     this.incomeIcon = incomeIcon; 

    } 

    private static class ViewHolder { 
     TextView incomeReference; 
     TextView incomeDate; 
     TextView incomeAmount; 
     ImageView incomeIcon; 
     ImageView forwardIcon; 

    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     IncomeModel incomeModel = getItem(position); 

     if (convertView == null) { 
      viewHolder = new ViewHolder(); 
      LayoutInflater inflater = context.getLayoutInflater(); 
      convertView = inflater.inflate(R.layout.adapter_view_layout, null, true); 
      viewHolder.incomeReference = (TextView) convertView.findViewById(R.id.text1); 
      viewHolder.incomeDate = (TextView) convertView.findViewById(R.id.text2); 
      viewHolder.incomeAmount = (TextView) convertView.findViewById(R.id.text3); 
      viewHolder.incomeIcon = (ImageView) convertView.findViewById(R.id.icon1); 
      viewHolder.forwardIcon = (ImageView) convertView.findViewById(R.id.icon2); 
      convertView.setTag(viewHolder); 

     } else { 
      viewHolder = (ViewHolder) convertView.getTag(); 
     } 

     viewHolder.incomeReference.setText(incomeModel.getIncomeCategory()); 
     viewHolder.incomeDate.setText(incomeModel.getIncomeDate()); 
     viewHolder.incomeAmount.setText(incomeModel.getIncomeAmount()); 
     switch (...?) { 

    } 
} 
+0

quelles sont les données? postez votre setter getter ou les détails de la base de données. –

Répondre

0
viewHolder.incomeAmount.setText(incomeModel.getIncomeAmount()); 
switch (income) { 
     //define your income to 1 for other income 
     case 1: 
      incomeIcon.setBackgroundResource(R.drawable.otherincome); 
      break; 
     default: 
      incomeIcon.setBackgroundResource(R.drawable.income); 
      break; 
    } 
+0

voir les informations mises à jour :) –

0

vous pouvez vérifier le type, si le type est le revenu signifie définir l'image correspondante d'autre définir l'autre image