آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مشکل در ListView

amir.kenarang  9 سال پیش  9 سال پیش
0 0

دوستان سلام و خسته نباشید.

من یک پروژه بر اساس آموزش ListView استاد نوشتم، ولی یه مشکلی دارم که وقتی برنامه رو کاملا میبندم هر چی که داخل برنامه بود از بین میره و پاک میشه(منظورم اطلاعاتی هست که کاربر وارد میکنه) و دقیقا نمیدونم باید از چه مبحثی استفاده کنم برای حل این مشکل.

آموزش بخش 14 رو نگاه کردم اما متوجه نشدم که چجوری میتونم موقع باز کردن مجدد برنامه اطلاعاتی که قبلا ذخیره کردم رو باز کنم.
کد های برنامه رو قرار میدم:

ActivityMain.java

 public class ActivityMain extends AppCompatActivity {
public ArrayAdapter adapter;
public Button btnAdd;
@Override
protected void onResume() {
G.currentActivity = this;
super.onResume();
if (adapter != null) {
adapter.notifyDataSetChanged();
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView lstContent = (ListView) findViewById(R.id.lstContent);
btnAdd = (Button) findViewById(R.id.btnAdd);
adapter = new AdapterWord(G.words);
lstContent.setAdapter(adapter);
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
StructWord word = new StructWord();
G.words.add(word);
adapter.notifyDataSetChanged();
}
});
adapter.notifyDataSetChanged();
}
}

 

G.java

 
 public class G extends Application {

public static Context context;
public static LayoutInflater inflater;
public static Activity currentActivity;
public static ArrayList<StructWord> words = new ArrayList<StructWord>();

public static SQLiteDatabase database;

public static final String DIR_SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath();
public static final String DIR_DATABASE = DIR_SDCARD + "/database-test/";

@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

File file = new File(DIR_DATABASE);
file.mkdirs();
database = SQLiteDatabase.openOrCreateDatabase(DIR_DATABASE + "/database.sqlite", null);
G.database.execSQL("CREATE TABLE IF NOT EXISTS wordtable (" +
"word_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE , " +
"word_word TEXT," +
"word_translate TEXT," +
"word_synonym TEXT, " +
"word_oposite TEXT, " +
"word_noun BOOL, " +
"word_verb BOOL, " +
"word_adj BOOL, " +
"word_adv BOOL," +
" word_example TEXT" +
")");
G.database.execSQL("CREATE TABLE IF NOT EXISTS listviewtable (" +
"list_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE ," +
"list_word TEXT, " +
"list_translate TEXT)");
}
}

AdapterWord.java

public class AdapterWord extends ArrayAdapter<StructWord> {
public AdapterWord(ArrayList<StructWord> array) {
super(G.context, R.layout.adapter_words, array);
}
public static class ViewHolder {
public TextView txtWord;
public TextView txtTranslate;
public ViewGroup layoutRoot;
public ImageView imgDelete;

public ViewHolder(View view) {
txtWord = (TextView) view.findViewById(R.id.txtWord);
txtTranslate = (TextView) view.findViewById(R.id.txtTranslate);
layoutRoot = (ViewGroup) view.findViewById(R.id.layoutRoot);
imgDelete = (ImageView) view.findViewById(R.id.imgDelete);
}

public void fill(final ArrayAdapter<StructWord> adapter, final StructWord item, final int position) {
txtWord.setText(item.word);
txtTranslate.setText(item.translate);
layoutRoot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(G.currentActivity, ActivityEdit.class);
intent.putExtra("POSITION", position);
G.currentActivity.startActivity(intent);
}
});
imgDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
adapter.remove(item);
}
});
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
StructWord item = getItem(position);
if (convertView == null) {
convertView = G.inflater.inflate(R.layout.adapter_words, parent, false);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.fill(this, item, position);
return convertView;
}
}

 
 public class ActivityEdit extends Activity {
@Override
protected void onResume() {
G.currentActivity = this;
super.onResume();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit);
final EditText edtWord = (EditText) findViewById(R.id.edtWord);
final EditText edtTranslate = (EditText) findViewById(R.id.edtTranslate);
final EditText edtSynonym = (EditText) findViewById(R.id.edtSynonym);
final EditText edtOposite = (EditText) findViewById(R.id.edtOposite);
final EditText edtExample = (EditText) findViewById(R.id.edtExample);
final Button btnOk = (Button) findViewById(R.id.btnOk);
final CheckBox chkNoun = (CheckBox) findViewById(R.id.chkNoun);
final CheckBox chkVerb = (CheckBox) findViewById(R.id.chkVerb);
final CheckBox chkadj = (CheckBox) findViewById(R.id.chkadj);
final CheckBox chkadv = (CheckBox) findViewById(R.id.chkadv);

Bundle extras = getIntent().getExtras();
int position = 0;
if (extras != null) {
position = extras.getInt("POSITION");
}
final StructWord word = G.words.get(position);
edtWord.setText(word.word);
edtTranslate.setText(word.translate);
edtSynonym.setText(word.synonym);
edtOposite.setText(word.oposite);
edtExample.setText(word.example);
chkNoun.setChecked(word.doneNoun);
chkVerb.setChecked(word.doneVerb);
chkadj.setChecked(word.doneadj);
chkadv.setChecked(word.doneadv);

btnOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
word.word = edtWord.getText().toString();
word.translate = edtTranslate.getText().toString();
word.synonym = edtSynonym.getText().toString();
word.oposite = edtOposite.getText().toString();
word.example = edtExample.getText().toString();
word.doneNoun = chkNoun.isChecked();
word.doneVerb = chkVerb.isChecked();
word.doneadj = chkadj.isChecked();
word.doneadv = chkadv.isChecked();
finish();
G.database.execSQL("INSERT INTO wordtable (word_word,word_translate,word_translate) VALUES('" + edtWord.getText() + "','" + edtTranslate.getText() + "','" + edtSynonym.getText() + "');");
}
});
}
}

 
public class StructWord {
public String word;
public String translate;
public String synonym;
public String oposite;
public String example;
public boolean doneNoun;
public boolean doneVerb;
public boolean doneadj;
public boolean doneadv;
}






 
+1 0
شما اطلاعات وارد شده توسط کاربر را کجا ذخیره میکنید ؟ (9 سال پیش)
+2 0
کدهاتو بذار تا نگاهی بهش بیاندازیم (9 سال پیش)
0 0
نمیدونم باید کجا و چجوری ذخیره کنم (9 سال پیش)
0 0
کد ها برنامه TestListView استاد هست (9 سال پیش)
+1 0
خوب میتونید برای ذخیره از دیتابیس استفاده کنید بهتره بخش 15 رو مطالعه کنید البته این لینک ها هم مفیدن لینک و لینک و لینک (9 سال پیش)
0 0
ممنون از را راهنماییتون اما منظورتون بخش 14 آموزش دیتابیس هست؟بازم متچکر از هدایتتون (9 سال پیش)
+1 0
لینک علاوه بر لینک هایی که دوستمون بهتون معرفی کردن این لینک هم آموزش مربوطه هست که تماشاش خالی از لطف نیست. و ضمنا برای تشکر کامل در مورد کسانی که بهتون کمک می کنند می تونید از لایک جلوی نظرات یا بالای پاسخ ها استفاده کنید که دوستان بازخوردش رو ببینند - موفق باشید (9 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
amir.kenarang  9 سال پیش
0 0

لطفا کمک کنید

+1 0
دوست عزیز چه کمکی بکنیم الان شما بخش 10 11 12 و 14 رو ببینی همه این موضکع ها رو کلا گفته باید کوری بگیرین و دیتا رو از دیتابیس دریافت کنید (9 سال پیش)
0 0
من اطلاعاتی رو که تو صفحه دوم یعنی edit وارد میکنم رو میتونم وارد دیتابیس کنم اما مشکلم اینه وقتی که دکمه به اضافه رو در صفحه اول برنامه میزنم نمیدونم و یک لیست جدید اضافه میشه ، نمیدونم چجوری وارد دیتابیس بکنم که دفعه بعد که وارد برنامه شدم همونجا باشه. مشکلم به نظر ساده میرسه(البته ساده هست) ولی توضیحش سخته. در ضمن من واقعا تازه کارم.همین کارو خیلی سخت کرده برام (9 سال پیش)
+1 0
هممون یه روز تازه کار بودیم مهم نیست. مهم اینه که عجله نداشته باشیم و خسته نشیم. شما لیست ویوت رو از دیتا بیس میخونی؟؟ (9 سال پیش)
0 0
ایول درست میگی.عجله ندارم ولی بعضی وقتا خسته کننده میشه. لیست ویو رو چجوری از دیتابیس بخونم؟فک کنم مشکل همینه.لیست ویو به دیتابیس وصل نیست (9 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .