我在这里有一个问题,我将 2 家不同咖啡店的名称和价格添加到数据库中,但是当我将它们显示给自定义列表视图时,它完全失败了,列表视图显示了 2 列具有相同名称的咖啡店,但是当我尝试使用普通的 ArrayAdapter 仅显示名称,这非常好。我不知道这里出了什么问题。谢谢你的帮助。
我用来检索数据的代码
public ArrayList<UserReview> searchAllReview(String name) {
ArrayList<UserReview> al = new ArrayList<>();
al.clear();
searchQuery = "SELECT * FROM detail3 where establish= '"+ name+ "'";
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(searchQuery, null);
UserReview userReview = new UserReview();
if (cursor.moveToFirst()) {
do {
userReview.name=cursor.getString(0);
userReview.rate=cursor.getFloat(3);
al.add(userReview);
} while (cursor.moveToNext());
}
return al;
}
这是我点击搜索的时候:
btnSearch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
list = new ArrayList<>();
db = new UserDBHandling(getApplicationContext());
List<Float> m = db.getRating(estab);
float max = Collections.max(m);
if(radioButtonAll.isChecked()) {
list = db.searchAllReview(estab);
}
else if(radioButtonBest.isChecked()){
list = db.searchBestReview(max, estab);
}
customAdapter = new CustomAdapter(getApplicationContext(), R.layout.custom_user_search , list);
// aa = new ArrayAdapter(getApplicationContext() , android.R.layout.simple_list_item_1 , list);
listView.setAdapter(customAdapter);
}
});
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
index = position;
return false;
}
});
这是自定义适配器:
public class CustomAdapter extends ArrayAdapter {
Context context;
int resource;
List<UserReview> objects;
public CustomAdapter( Context context, int resource, List objects) {
super(context, resource, objects);
this.context = context;
this.resource=resource;
this.objects=objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
MyElements myElements;
if(convertView ==null){
myElements = new MyElements();
convertView = LayoutInflater.from(context).inflate(resource , parent , false);
myElements.text = convertView.findViewById(R.id.txtViewUser);
myElements.rate=convertView.findViewById(R.id.ratingUser);
}else {
myElements=(MyElements)convertView.getTag();
}
UserReview userReview = objects.get(position);
myElements.text.setText(userReview.name);
myElements.rate.setRating(userReview.rate);
myElements.rate.setClickable(false);
return convertView;
}
public class MyElements{
TextView text;
RatingBar rate;
}