【问题标题】:Output from SQLite database into columns should display values, but just shows default "TextView"从 SQLite 数据库输出到列应该显示值,但只显示默认的“TextView”
【发布时间】: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


    【解决方案1】:

    那是因为您实际上并没有为每个 TextView 分配值。您刚刚初始化了变量。

    你需要添加

    Year.setText(user.getYear());
    Club.setText(user.getClub());
    Apps.setText(user.getApps());
    

    因此您设置了 Year、Club 和 Apps 的文本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-17
      • 1970-01-01
      • 2015-01-31
      • 2019-08-15
      • 2019-04-16
      • 2014-06-19
      • 2018-08-06
      相关资源
      最近更新 更多