【发布时间】:2020-06-05 13:02:00
【问题描述】:
我正在尝试从我的 SQLite 数据库中输出三列,并将它们显示在我的 Android 应用程序的“表”上。
虽然我可以运行我的查询并获得要填充的正确数量的单元格,但由于某种原因,我的代码没有将查询中的值放入其中,因此它一直显示一个表,每个表中只显示“TextView”行。
为此,我首先在我的班级中使用我的所有查询运行一个查询,并调用此方法getListContents()。
然后我创建了两个布局:
布局 1 被称为 view_player_history.xml,它只是线性布局中的列表视图。
布局 2 被称为 list_adapter_view.xml 并且再次是线性布局,但是这次有三个文本视图来为我的数据提供三列。
然后我创建三个不同的类:
用户类:我在这里定义我的所有列并返回相关数据。
public class User {
private String Year;
private String Club;
private String Apps;
public User(String year, String club, String apps) {
Year = year;
Club = club;
Apps = apps;
}
public String getYear() {
return Year;
}
public String getClub() {
return Club;
}
public String getApps() {
return Apps;
}
}
ViewPlayerHistoryContents 类:这里我正在访问我的 SQL 数据库以提取数据并将其添加到要显示的列表中
public class ViewPlayerHistoryContents extends AppCompatActivity {
DatabaseAccess myDB;
ArrayList<User> userList;
ListView listView;
User user;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view_player_history);
myDB = new DatabaseAccess(this);
userList = new ArrayList<>();
Cursor data = myDB.getListContents();
int numRows = data.getCount();
while (data.moveToNext()){
user = new User(data.getString(0), data.getString(1), data.getString(2));
userList.add(user);
}
com.example.transfergame.ThreeClass adapter = new com.example.transfergame.ThreeClass(this, R.layout.list_adapter_view, userList);
listView = (ListView) findViewById(R.id.listView);
listView.setAdapter(adapter);
}
}
三类:在这里我试图将它分配给不同的文本视图,以便它显示在我的列中
public class ThreeClass extends ArrayAdapter<User> {
private LayoutInflater mInflator;
private ArrayList<User> users;
private int mViewResourceId;
public ThreeClass (Context context, int textViewResourceId, ArrayList<User> users){
super(context, textViewResourceId, users);
this.users = users;
mInflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mViewResourceId = textViewResourceId;
}
public View getView(int position, View convertView, ViewGroup parents) {
convertView = mInflator.inflate(mViewResourceId,null);
User user = users.get(position);
TextView Year = (TextView) convertView.findViewById(R.id.textYear);
TextView Club = (TextView) convertView.findViewById(R.id.textClub);
TextView Apps = (TextView) convertView.findViewById(R.id.textApps);
return convertView;
}
}
但由于某种原因,它似乎没有分配值。我知道它的其余部分工作正常,因为正如我所提到的,它总是在我的 ListView 中输出正确的行数。它只是不更新文本。因此,也没有错误消息,因为没有任何错误。
是否有一个拼写错误阻止了分配给每个 TextView 的值?
【问题讨论】:
标签: java android-studio