我正在尝试使用CustomAdapter从SQLite数据库设置ListView。 我希望这个ListView能够根据数据库中的“情绪”而改变。
心情基本上从0到4。 一些建议可能会有所帮助。非常感谢... // TODO
// Replace with SQLite data
DatabaseHelper myDB = new DatabaseHelper(getContext());
List<MoodItem> moodItemList = myDB.getAllMoodItems();
String[] mMoods = new String[moodItemList.size()];
for(MoodItem moodItem : moodItemList){
mMoods[position] = moodItemList.get(position);
Log.d("Mood :", " " + moodItem.getMood());
}
// It's working when I use this for mMoods
// int[] mMoods = {0, 3, 4, 2, 1};
switch (mMoods[position]) {
case 0:
// Bad mood here, so red background and the smallest width
mRelativeLayout.setBackgroundColor(0xffde3c50); // @color/faded_red
mCustomView.getLayoutParams().width = parent.getWidth() / 5; // 1/5 of screen's width
return mCustomView;
case 1:
mRelativeLayout.setBackgroundColor(0xff9b9b9b); // @color/warm_grey
mCustomView.getLayoutParams().width = parent.getWidth() * 2 / 5; // 2/5 of screen's width
return mCustomView;
case 2:
mRelativeLayout.setBackgroundColor(0xa5468ad9); // @color/cornflower_blue_65
mCustomView.getLayoutParams().width = parent.getWidth() * 3 / 5; // 3/5 of screen's width
return mCustomView;
case 3:
mRelativeLayout.setBackgroundColor(0xffb8e986); // @color/light_sage
mCustomView.getLayoutParams().width = parent.getWidth() * 4 / 5; // 4/5 of screen's width
return mCustomView;
case 4:
mRelativeLayout.setBackgroundColor(0xfff9ec4f); // @color/banana_yellow
mCustomView.getLayoutParams().width = parent.getWidth(); // screen's width
return mCustomView;
}
return mCustomView;
See this picture as a result for what I would like
编辑: 用int []替换String []。这对开关来说没问题。 关键是,当我在评论中使用我的代码时:
int[] mMoods = {"0", "3", "4", "2", "1"};
CustomAdapter显示我需要的一切:红色为0和宽度的1/5。蓝色为3和3/5的宽度等......
但这里的真正目的是用来自SQLite数据库的真实数据替换int [] mMoods。当我使用代码时,我的ListView项目每次都是相同的......:/
我找不到原因。
答案 0 :(得分:0)
我刚刚发现了如何回答我的问题:
在我的CustomAdapter的View getView()中:
打开数据库和我的光标
DatabaseHelper myDB = new DatabaseHelper(getContext())
Cursor mCursor = myDB.getAllData();
创建我的ArrayList并向其添加SQLite数据
ArrayList<Integer> mMoodsArray = new ArrayList<>();
while (mCursor.moveToNext()){
String mComment = mCursor.getString(2);
int mMood = mCursor.getInt(3);
mCommentsArray.add(mComment);
mMoodsArray.add(mMood);
}
从ArrayList创建我的数组
int[] mMoods = new int[mMoodsArray.size()];
在我的数组中添加所有这些
for ( int i = 0; i < mMoodsArray.size(); i++){
mMoods[i] = mMoodsArray.get(i);
}
现在转换工作正常并且很好!
我真的不知道是否有更好的方法来完成我所做的事情。但它有效!
我希望这可以帮助其他人。
感谢。