![](/img/trans.png)
[英]how to retrieve specific values from SQLite database (android) and display in an editable 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.