データベースに102個のパズルを持つ小さなパズルアンドロイドアプリを開発しています。私はを2 TextViews
とし、Button
をListView
とした。リストビューの押されたボタンが押されて5番目の位置にある
私はパズルを表示するためにTextView
としてpuzzlを持っています。答えはTextView
と答えています(デフォルトではGONE
となっています)。ユーザーがanswer_buttonを押すとTextView
答えが答え(answer.setVisibility(View.VISIBLE);
)を示します。
すべて問題なく動作していますが、問題があることがわかりました。私がListView
に見るために1番目の答えのためにボタンを押すと、それは1番目の答えを示していますが、下からも例えば5番目、11番目、16番目などの他の回答を開いています。私が2番目の答えのためにボタンを押すと、それは2番目の答えと7番目、12番目などを示しています。すべてが開いています。
ボタンを作成したいのは、選択した回答のみをユーザーに表示する必要があります。助けてください、アダプターまたはListView
の私の間違いはどこですか?どうもありがとうございました。
public class PuzzleAdapter extends BaseAdapter{
Context context;
LayoutInflater inflater;
List<Puzzles> puzzles;
public PuzzleAdapter(Context context1, List<Puzzles> p1){
this.context=context1;
this.puzzles =p1;
inflater = (LayoutInflater)this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return puzzles.size();
}
@Override
public Object getItem(int i) {
return puzzles.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if (view == null){
view = inflater.inflate(R.layout.puzzle_adapter, null);
}
final Puzzles puzz = this.puzzles.get(i);
TextView puzzl=(TextView)view.findViewById(R.id.puzzl);
puzzl.setText(puzz.getZagad());
final TextView answer=(TextView)view.findViewById(R.id.answer);
answer.setText(puzz.getOtveti());
final Button answer_button = (Button)view.findViewById(R.id.answer_button);
answer_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
answer.setVisibility(View.VISIBLE);
}
});
return view;
}
}
私はあなたが直接見、したがって、この問題は発生し維持、
をとっているように私は、データベース
// public List<Puzzles> zagadki(int id){
public List<Puzzles> zagadki(Context context){
SQLiteDatabase db = this.getReadableDatabase();
List<Puzzles> puzzles = new ArrayList<Puzzles>();
// String s = "select * from zagad where _id=" + id;
String s = "select * from zagad";
Cursor cursor = db.rawQuery(s, null);
if (cursor.moveToFirst()){
do {
Puzzles puzzle = new Puzzles();
puzzle.set_id(cursor.getInt(0));
puzzle.setZagad(cursor.getString(1));
puzzle.setOtveti(cursor.getString(2));
puzzles.add(puzzle);
}
while (cursor.moveToNext());
}
db.close();
return puzzles;
}
がnullチェックを削除し(図== NULL){ ビュー= inflater.inflate(R.layout.puzzle_adapter、NULL)場合 を試みます。 } –
お兄さん、私の問題を解決してくれてありがとうございました –