簡體   English   中英

Output 從 SQLite 數據庫到列應該顯示值,但只顯示默認的“TextView”

[英]Output from SQLite database into columns should display values, but just shows default “TextView”

我正在嘗試從我的 SQLite 數據庫中 output 三列,並讓它們顯示在我的 Android 應用程序的“表”上。

雖然我可以運行我的查詢並獲得要填充的正確數量的單元格,但由於某種原因,我的代碼沒有將查詢中的值放入其中,因此它一直顯示一個表格,每行都顯示“TextView”。

為此,我首先使用我的所有查詢在 class 中運行一個查詢,並調用此方法getListContents()

然后我正在創建兩個布局:

布局 1 稱為view_player_history.xml並且只是線性布局中的列表視圖。

布局 2 稱為list_adapter_view.xml並且再次是線性布局,但這次有三個文本視圖為我的數據提供三列。

然后我創建三個不同的類:

用戶 Class:在這里我定義了我的所有列並返回相關數據。

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 class:這里我正在訪問我的 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);


}
}

三個 Class:在這里我試圖將它分配給不同的文本視圖,以便它顯示在我的列中

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;
}
}

但由於某種原因,它似乎沒有分配值。 我知道它的 rest 工作正常,因為正如我提到的,它總是在我的 ListView 中輸出正確的行數。 它只是不更新文本。 因此,也沒有錯誤消息,因為沒有任何錯誤。

是否存在阻止分配給每個 TextView 的值的錯字?

那是因為您實際上並沒有為每個 TextView 分配值。 您剛剛初始化了變量。

您需要添加

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

所以你設置了 Year、Club 和 Apps 的文本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM