简体   繁体   中英

Changing only 1 color for the text in arraylist connected to firebase

I've managed to only change the color for the whole array list, trying to figure out a way to get the array's position and set different color for each row, this is my code that is changing the whole array list color:

package com.ofir.motoinfo;

import android.content.Intent;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

import com.firebase.ui.database.FirebaseListAdapter;
import com.google.firebase.database.ChildEventListener;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import java.util.ArrayList;

import static android.media.CamcorderProfile.get;

public class ktmList extends AppCompatActivity {

    private ListView mListView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.models_list);

        mListView = (ListView) findViewById(R.id.models_list);

       final ArrayList<bikeDetails> models = new ArrayList<>();

   final BikeAdapter bikeAdapter = new BikeAdapter(this,models);


  DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReferenceFromUrl("https://xxxxxx.firebaseio.com/models");


      databaseReference.addChildEventListener(new ChildEventListener() {
          @Override
          public void onChildAdded(DataSnapshot dataSnapshot, String s) {
             String value = dataSnapshot.getValue(String.class);
              models.add(new bikeDetails(value, ContextCompat.getColor(ktmList.this, R.color.colorAccent)));
              bikeAdapter.notifyDataSetChanged();
          }

          @Override
          public void onChildChanged(DataSnapshot dataSnapshot, String s) {

          }

          @Override
          public void onChildRemoved(DataSnapshot dataSnapshot) {

          }

          @Override
          public void onChildMoved(DataSnapshot dataSnapshot, String s) {

          }

          @Override
          public void onCancelled(DatabaseError databaseError) {

          }
      });

mListView.setAdapter(bikeAdapter);

    }
}

need to override the getView method in your custom adapter class:

public View getView(int position, View convertView, ViewGroup parent) {
    View view = super.getView(position, convertView, parent);

    TextView textView = (TextView) view.findViewById(android.R.id.text1);
    textView.setTextColor(Color.BLUE);

    if(position == 0){
        textView.setTextColor(Color.CYAN);
    }
    if(position == 1){
        textView.setTextColor(Color.BLACK);
    }
    if(position == 2){
        textView.setTextColor(Color.YELLOW);
    }
    if(position == 3){
        textView.setTextColor(Color.GREEN);
    }
    if(position == 4){
        textView.setTextColor(Color.MAGENTA);
    }
    if(position > 4){
        textView.setTextColor(Color.BLACK);
    }

    return view;
}

this is just an example, modify it as you need, may also be easy to put into switch statement

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM