java 您所在的位置:网站首页 listview设置字体颜色 java

java

2023-03-22 11:12| 来源: 网络整理| 查看: 265

如何处理为ListView显示空视图的问题,因为当我从Firebase数据库读取数据并将其显示在ListView中时,我不知道要放入哪些数据.我正在使用CustomListAdapter更改字体颜色和ListView的背景颜色

注意:我正在从Firebase数据库读取数据,并将其显示在ListView中,任何解决方案

CustomListAdapter.java

public class CustomListAdapter extends BaseAdapter { private static final int HERO_COUNT = 12; private Context context; private List items; public CustomListAdapter(Context context) { this.context = context; items = new ArrayList(); } @Override public int getCount() { return HERO_COUNT; } @Override public String getItem(int position) { if (position >= 0 && position < items.size()) { return items.get(position); } return ""; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View v, ViewGroup parent) { View mView = v; if (mView == null) { LayoutInflater vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); mView = vi.inflate(R.layout.custom_list, null, false); TextView text = (TextView) mView.findViewById(R.id.textView); //textView.setTextColor(Color.BLUE); text.setText(getItem(position)); if (items.isEmpty()) { // Set holder color } else { text.setTextColor(Color.WHITE); int color = Color.argb(200, 255, 64, 64); text.setBackgroundColor(color); } } return mView; } public void updateList(List updatedItems) { items.clear(); items.addAll(updatedItems); notifyDataSetChanged(); } }

ViewDatabase.java

public class ViewDatabase extends AppCompatActivity { private static final String TAG = "ViewDatabase"; //add Firebase Database stuff private FirebaseDatabase mFirebaseDatabase; private FirebaseAuth mAuth; private FirebaseAuth.AuthStateListener mAuthListener; private DatabaseReference myRef; private String userID; private ListView mListView; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.view_database_layout); mListView = (ListView) findViewById(R.id.listview); CustomListAdapter adapter = new CustomListAdapter(this); mListView.setAdapter(adapter); //declare the database reference object. This is what we use to access the database. //NOTE: Unless you are signed in, this will not be useable. mAuth = FirebaseAuth.getInstance(); mFirebaseDatabase = FirebaseDatabase.getInstance(); myRef = mFirebaseDatabase.getReference(); FirebaseUser user = mAuth.getCurrentUser(); // userID = user.getUid(); userID = ""; mAuthListener = new FirebaseAuth.AuthStateListener() { @Override public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { FirebaseUser user = firebaseAuth.getCurrentUser(); if (user != null) { // User is signed in Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid()); toastMessage("Successfully signed in."); } else { // User is signed out Log.d(TAG, "onAuthStateChanged:signed_out"); toastMessage("Successfully signed out."); } // ... } }; myRef.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { // This method is called once with the initial value and again // whenever data at this location is updated. showData(dataSnapshot); } @Override public void onCancelled(DatabaseError databaseError) { } }); } private void showData(DataSnapshot dataSnapshot) { for (DataSnapshot ds : dataSnapshot.getChildren()) { DailyInfo uInfo = new DailyInfo(); uInfo.setHero1(ds.child(userID).getValue(DailyInfo.class).getHero1()); //set the name1 uInfo.setHero2(ds.child(userID).getValue(DailyInfo.class).getHero2()); //set the name2 uInfo.setHero3(ds.child(userID).getValue(DailyInfo.class).getHero3()); //set the name3 uInfo.setHero4(ds.child(userID).getValue(DailyInfo.class).getHero4()); //set the name4 uInfo.setHero5(ds.child(userID).getValue(DailyInfo.class).getHero5()); //set the name5 uInfo.setHero6(ds.child(userID).getValue(DailyInfo.class).getHero6()); //set the name6 uInfo.setHero7(ds.child(userID).getValue(DailyInfo.class).getHero7()); //set the name7 uInfo.setHero8(ds.child(userID).getValue(DailyInfo.class).getHero8()); //set the name8 uInfo.setHero9(ds.child(userID).getValue(DailyInfo.class).getHero9()); //set the name9 uInfo.setHero10(ds.child(userID).getValue(DailyInfo.class).getHero10()); //set the name10 uInfo.setHero11(ds.child(userID).getValue(DailyInfo.class).getHero11()); //set the name11 uInfo.setHero12(ds.child(userID).getValue(DailyInfo.class).getHero12()); //set the name12 //display all the information Log.d(TAG, "showData: Hero1: " + uInfo.getHero1()); Log.d(TAG, "showData: Hero2: " + uInfo.getHero2()); Log.d(TAG, "showData: Hero3: " + uInfo.getHero3()); Log.d(TAG, "showData: Hero4: " + uInfo.getHero4()); Log.d(TAG, "showData: Hero5: " + uInfo.getHero5()); Log.d(TAG, "showData: Hero6: " + uInfo.getHero6()); Log.d(TAG, "showData: Hero7: " + uInfo.getHero7()); Log.d(TAG, "showData: Hero8: " + uInfo.getHero8()); Log.d(TAG, "showData: Hero9: " + uInfo.getHero9()); Log.d(TAG, "showData: Hero10: " + uInfo.getHero10()); Log.d(TAG, "showData: Hero11: " + uInfo.getHero11()); Log.d(TAG, "showData: Hero12: " + uInfo.getHero12()); ArrayList array = new ArrayList(); array.add(uInfo.getHero1()); array.add(uInfo.getHero2()); array.add(uInfo.getHero3()); array.add(uInfo.getHero4()); array.add(uInfo.getHero5()); array.add(uInfo.getHero6()); array.add(uInfo.getHero7()); array.add(uInfo.getHero8()); array.add(uInfo.getHero9()); array.add(uInfo.getHero10()); array.add(uInfo.getHero11()); array.add(uInfo.getHero12()); /* ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,array); mListView.setAdapter(adapter);*/ if (mListView.getAdapter() instanceof CustomListAdapter) { ((CustomListAdapter) mListView.getAdapter()).updateList(array); mListView.setBackgroundColor(ContextCompat.getColor(mListView.getContext(), R.color.category_colors)); } } } @Override public void onStart() { super.onStart(); mAuth.addAuthStateListener(mAuthListener); } @Override public void onStop() { super.onStop(); if (mAuthListener != null) { mAuth.removeAuthStateListener(mAuthListener); } } /** * customizable toast * * @param message */ private void toastMessage(String message) { Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); } }

view_database_layout.xml

custom_list.xml

DailyInfo.java

public class DailyInfo { private String hero1; private String hero2; private String hero3; private String hero4; private String hero5; private String hero6; private String hero7; private String hero8; private String hero9; private String hero10; private String hero11; private String hero12; public DailyInfo(){ } public String getHero1() { return hero1; } public void setHero1(String hero1) { this.hero1 = hero1; } public String getHero2() { return hero2; } public void setHero2(String hero2) { this.hero2 = hero2; } public String getHero3() { return hero3; } public void setHero3(String hero3) { this.hero3 = hero3; } public String getHero4() { return hero4; } public void setHero4(String hero4) { this.hero4 = hero4; } public String getHero5() { return hero5; } public void setHero5(String hero5) { this.hero5 = hero5; } public String getHero6() { return hero6; } public void setHero6(String hero6) { this.hero6 = hero6; } public String getHero7() { return hero7; } public void setHero7(String hero7) { this.hero7 = hero7; } public String getHero8() { return hero8; } public void setHero8(String hero8) { this.hero8 = hero8; } public String getHero9() { return hero9; } public void setHero9(String hero9) { this.hero9 = hero9; } public String getHero10() { return hero10; } public void setHero10(String hero10) { this.hero10 = hero10; } public String getHero11() { return hero11; } public void setHero11(String hero11) { this.hero11 = hero11; } public String getHero12() { return hero12; } public void setHero12(String hero12) { this.hero12 = hero12; } }

解决方法:

您在ValueEventListener上收到响应后创建适配器:

CustomListAdapter adapter = new CustomListAdapter(ViewDatabase.this , R.layout.custom_list , mList); ListView mListView= findViewById(R.id.listview); mListView.setAdapter(adapter);

取而代之的是,例如,在onCreate内的ViewDatabase上设置适配器,并根据该初始状态设置颜色.

@Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.view_database_layout); mListView = findViewById(R.id.listview); CustomListAdapter adapter = new CustomListAdapter(this); mListView.setAdapter(adapter); //[...] }

并且,而不是创建适配器,而是对其进行更新:

private void showData(DataSnapshot dataSnapshot) { //[...] if (mListView.getAdapter() instanceof CustomListAdapter) { ((CustomListAdapter)mListView.getAdapter()).updateList(array); } }

您还可以将ArrayAdapter替换为BaseAdapter作为扩展类:

public class CustomListAdapter extends BaseAdapter { private static final int HERO_COUNT = 12; private Context context; private List items; public CustomListAdapter(Context context) { this.context = context; items = new ArrayList(); } @Override public int getCount() { return HERO_COUNT; } @Override public String getItem(int position) { if (position >= 0 && position < items.size()) { return items.get(position); } return ""; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View v, ViewGroup parent) { View mView = v; if (mView == null) { LayoutInflater vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); mView = vi.inflate(R.layout.custom_list, null, false); } //Bind view content here //TODO associate holder to tag return mView; } public void updateList(List updatedItems) { items.clear(); items.addAll(updatedItems); notifyDataSetChanged(); } } }

编辑:

为了在接收值时更改列表上的默认背景色,可以在主布局上设置默认颜色:

然后在收到值时更改它:

private void showData(DataSnapshot dataSnapshot) { //[...] if (mListView.getAdapter() instanceof CustomListAdapter) { ((CustomListAdapter)mListView.getAdapter()).updateList(array); listView.setBackgroundColor(ContextCompat.getColor(listView.getContext(), R.color.loaded_color)); } }

如果要更改行颜色,则需要在字符串为空时更改getView上的行布局.

编辑2指定在何处进行视图更改

以上是互联网集市为您收集整理的java-阅读firebase DB后如何在ListView上更改颜色和字体全部内容,希望文章能够帮你解决java-阅读firebase DB后如何在ListView上更改颜色和字体所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有