A word
проект SQLITE3, используемый во фрагменте Android, передает данные последнего кортежа несколько раз.Тем не менее, я переписал код в другом проекте с именем people
без использования фрагмента работает хорошо.Интересно, почему эта проблема возникает, поскольку код части передачи данных практически одинаков.НИЖЕ - часть передачи данных двух проектов.
1.проблема в проекте: слово
1.1фрагмент
public class fragment_review extends Fragment {
private OnFragmentInteractionListener mListener;
private ArrayList<word> wordlist;
private SQLiteDatabase db;
private DBHelper dbHelper;
private View rootView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState){
rootView = inflater.inflate(fragment_fragment_review, container,false);
manageDatabase();
return rootView;
}
private void manageDatabase() {
LinearLayout put_text = (LinearLayout) rootView.findViewById(R.id.store_sample_database);
wordlist = new ArrayList<word>();
dbHelper = new DBHelper(getActivity());
db = dbHelper.getWritableDatabase();
Cursor cursor=db.rawQuery("select * from wordtable",null);
while (cursor.moveToNext()) {
String id = cursor.getString(cursor.getColumnIndex("id"));
String en_word = cursor.getString(cursor.getColumnIndex("en_word"));
String meaning = cursor.getString(cursor.getColumnIndex("meaning"));
word w=new word(id, en_word, meaning);
wordlist.add(w);
}
for (word w:wordlist) {
TextView tv = new TextView(getActivity());
tv.setText(w.toString());
tv.setTextSize(18);
put_text.addView(tv);
}
}
public interface OnFragmentInteractionListener {
// TODO: Update argument type and name
void onFragmentInteraction(Uri uri);
}
}
1.2DBHelper.java
public class DBHelper extends SQLiteOpenHelper {
String CREATE_TABLE="CREATE TABLE wordtable(id INTEGER PRIMARY KEY AUTOINCREMENT," +
"en_word CHAR," +
"meaning CHAR)";
String INSERT_DATA="INSERT INTO wordtable (id,en_word,meaning)";
String VALUES1 ="VALUES(1, '00N1','S1' )";
String VALUES2 ="VALUES(2, 'hvN2','S2' )";
String VALUES3 ="VALUES(3, 'N3','b kjbS3' )";
String VALUES4 ="VALUES(4, 'N4','xddfS4' )";
//build databse
public DBHelper(Context context) {
super(context, "word_2ed.db",null,1);
}
@Override
public void onCreate(SQLiteDatabase db) {
//build table
db.execSQL("DROP TABLE IF EXISTS wordtable");
db.execSQL(CREATE_TABLE);
db.execSQL(INSERT_DATA+VALUES1);
db.execSQL(INSERT_DATA+VALUES2);
db.execSQL(INSERT_DATA+VALUES3);
db.execSQL(INSERT_DATA+VALUES4);
}
1.3 РЕЗУЛЬТАТ ПРОЕКТА word
2 отлично работает в проекте: люди
2.1 MainActivity.java
public class MainActivity extends AppCompatActivity {
List<person> personList;
private MyOpenHelper myOpenHelper;
private SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initUI();
}
private void initUI() {//SAME AS THE manageDatabase() METHOD
LinearLayout ll=(LinearLayout) findViewById(R.id.LL);
LinearLayout entry1 = findViewById(R.id.ll_first);
LinearLayout entry2 = findViewById(R.id.ll_second);
personList = new ArrayList<person>();
myOpenHelper = new MyOpenHelper(this);
db = myOpenHelper.getWritableDatabase();
Cursor cursor=db.rawQuery("select * from person",null);
while (cursor.moveToNext()) {
String _id = cursor.getString(cursor.getColumnIndex("_id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
String salary = cursor.getString(cursor.getColumnIndex("salary"));
String phone = cursor.getString(cursor.getColumnIndex("phone"));
person p=new person(_id, name, salary, phone);
personList.add(p);
}
for(person p:personList)
{
TextView tv1=new TextView(this);
TextView tv2=new TextView(this);
tv1.setText(p.toString1());
tv1.setTextSize(18);
tv2.setText(p.toString2());
tv2.setTextSize(18);
entry1.addView(tv1);
entry2.addView(tv2);
}
}
}
2.2MyOpenHelper.Ява
public class MyOpenHelper extends SQLiteOpenHelper {
String CREATE_TABLE="CREATE TABLE person(_id INTEGER PRIMARY KEY AUTOINCREMENT," +
"name CHAR," +
"salary CHAR," +
"phone CHAR)";
String INSERT_DATA="INSERT INTO person (_id,name,salary,phone)";
String VALUES1 ="VALUES(1, 'N1','S1','P1' )";
String VALUES2 ="VALUES(2, 'N2','S2','P2' )";
String VALUES3 ="VALUES(3, 'N3','S3','P3' )";
String VALUES4 ="VALUES(4, 'N4','S4','P4' )";
public MyOpenHelper(Context context) {
super(context, "people.db",null,1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE);
db.execSQL(INSERT_DATA+VALUES1);
db.execSQL(INSERT_DATA+VALUES2);
db.execSQL(INSERT_DATA+VALUES3);
db.execSQL(INSERT_DATA+VALUES4);
}