رفتن به مطلب
  • 0

نشان دادن اطلاعات در دیتابیس تو یه صفحه


mr.ehsan8001

سوال

سلام من طبق آموزش اقای شاهدی دیتا بیس ساختم و توی یه لیست ویو قرار دادم و میخام وقتی کاربر روی یه گزینه کلیک کرد وارد یه صفحه بشه که مطالب مربوط به اونو نشون بده.

خودم یسری کار کردم که دو تا مشکل داشت:

توی صفحه حدید متن ها داخل [ ] بودن  و همه اطلاعات دیتابیستو نشون میداد ،نه اونی که برای اون گزینست.

اینم کداشه:

کلاس DetailActivity برای نشون دادن اطلاعات روی یه لیوت:

public class DetailActivity extends AppCompatActivity {
    protected String courseTitle;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail);
        FontsOverride.setDefaultFont(this, "MONOSPACE", "iransans.ttf");

        courseTitle = getIntent().getStringExtra(MainActivity.COURSE_TITLE);
        TextView tvTitle = (TextView) findViewById(R.id.tvTitle);
        tvTitle.setText(courseTitle);

        String courseDesc = getIntent().getStringExtra(MainActivity.COURSE_DESC);
        TextView tvDesc = (TextView) findViewById(R.id.tvDescription);
        tvDesc.setText(courseDesc);
    }
}

اینم کد MainActivity:

    public static final String COURSE_TITLE = "coursetitle";
    public static final String COURSE_DESC = "courseDesc";
    public static final int DETAIL_REQUEST_CODE = 1001;    
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

     final MyDatabase db = new MyDatabase(this);
ListView lv1 = (ListView) findViewById(R.id.lv1);
ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,db.getListOfRow("SELECT * FROM data","title"));
lv1.setAdapter(adapter);
        lv1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                desplayDetail(db);
            }
        });

    private void desplayDetail(MyDatabase db) {
        Intent intent = new Intent(this, DetailActivity.class);
        intent.putExtra(COURSE_TITLE, String.valueOf(db.getListOfRow("SELECT * FROM data","title")));
        intent.putExtra(COURSE_DESC, String.valueOf(db.getListOfRow("SELECT * FROM data","content")));
        startActivityForResult(intent, DETAIL_REQUEST_CODE);
    }

لطفا کد های مربوط به سرچ کردن داخل لیست ویو و اضافه کردن یه آیتم به علاقه مندی ها و اینکه چطوری دیتابیس رو رمزگذاری کنیم که نتونن سواستفاده رو هم بگید.فقط من مبتدی هستم زیر دیپلمی توضیح بدید مرسی. :give_rose:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

ارسال‌های توصیه شده

 

اینو امتحان کن

db.getListOfRow("SELECT * FROM data WHERE name LIKE "%'" + search + "'%"","name")

زیر 

'" + search + "'

خط قرمز میکشه میگه:

Too many characters in character literal

لینک ارسال
به اشتراک گذاری در سایت های دیگر

من رفتم امتحان کردم این کد کار کرد برام

db.getListOfRow("SELECT * FROM table where name  LIKE '%" + search + "%'","name")

یه بزرگواری کن کد اینکه چطوری مقدار ادیت تکست رو میگیری و میریزی توی search رو بذار

لینک ارسال
به اشتراک گذاری در سایت های دیگر

من رفتم امتحان کردم این کد کار کرد برام

db.getListOfRow("SELECT * FROM table where name  LIKE '%" + search + "%'","name")

یه بزرگواری کن کد اینکه چطوری مقدار ادیت تکست رو میگیری و میریزی توی search رو بذار

مگه مقدار باید بگیرم ! :wacko1:

من فقط ادیت تکست رو معرفی کردم که اسمشو search گذاشتم.

اینم کد:

public class SearchActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.search);
        FontsOverride.setDefaultFont(this, "MONOSPACE", "iransans.ttf");
        final MyDatabase db = new MyDatabase(SearchActivity.this);
        EditText search = (EditText) findViewById(R.id.search);
        final ListView lv1 = (ListView) findViewById(R.id.search_list);

        ArrayAdapter adapter = new ArrayAdapter(SearchActivity.this, android.R.layout.simple_list_item_1,
                db.getListOfRow("SELECT * FROM table where title  LIKE '%" + search + "%'","title"));
        lv1.setAdapter(adapter);
        lv1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent intent=new Intent(SearchActivity.this,DetailActivity.class);
                intent.putExtra("position",position+1);
                startActivity(intent);
            }
        });
    }
}
لینک ارسال
به اشتراک گذاری در سایت های دیگر

 

مگه مقدار باید بگیرم ! :wacko1:

من فقط ادیت تکست رو معرفی کردم که اسمشو search گذاشتم.

اینم کد:

public class SearchActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.search);
        FontsOverride.setDefaultFont(this, "MONOSPACE", "iransans.ttf");
        final MyDatabase db = new MyDatabase(SearchActivity.this);
        EditText search = (EditText) findViewById(R.id.search);
        final ListView lv1 = (ListView) findViewById(R.id.search_list);

        ArrayAdapter adapter = new ArrayAdapter(SearchActivity.this, android.R.layout.simple_list_item_1,
                db.getListOfRow("SELECT * FROM table where title  LIKE '%" + search + "%'","title"));
        lv1.setAdapter(adapter);
        lv1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent intent=new Intent(SearchActivity.this,DetailActivity.class);
                intent.putExtra("position",position+1);
                startActivity(intent);
            }
        });
    }
}

 

خسته نباشی واقعا  :fekr:

باید مقدار اون ادیت تکست رو بریزی تو یه متغیر استرینگ

String meghdar=search.gettext().tostring();

اینم کوئریت

db.getListOfRow("SELECT * FROM data where name  LIKE '%" + meghdar + "%'","name")
لینک ارسال
به اشتراک گذاری در سایت های دیگر

 

خسته نباشی واقعا  :fekr:

باید مقدار اون ادیت تکست رو بریزی تو یه متغیر استرینگ

String meghdar=search.gettext().tostring();

اینم کوئریت

db.getListOfRow("SELECT * FROM data where name  LIKE '%" + meghdar + "%'","name")

باید تو متد addTextChangeListener میزاشتم،قبلش کار نمیکرد.

الان یه مشکل دیگه وجود داره :DD:  

وقتی الان هر چی تایپ کنم لیست همه تایتل ها رو میاره نه اونی که شبیه سرچه.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

شما باید توی متد displaydetail که اینتنت هارو تعریف کردین به جای اونا بیاید و position که توی setonitemclicklistener داده بهتون رو بفرستید

البته باید یکی اضافه کنی بهش

مثلا

Intent intent=new Intent(this,displaydetails.class);putextra("position",position+1);startactivity(intent);
تو اکتیویتی مقصد هم باید مقدار اینتنت رو بگیری
Intent intent = getIntent();Bundle bundle = intent.getExtras();int position = bundle.getInt("position");String felan=db.getString("select * from table where id='"+position+"'","esm-field");edittext.settext(felan)
تا اینجاش از دستم برمیومد

کاری که گفتین رو کردم ولی وقتی رو گزینه کلیک میکنم برنامه فورس استاپ میشه،ارور اندروید مانیتور هم اینه:

java.lang.RuntimeException: Unable to start activity ComponentInfo{ir.khormaloo.mostahabatjame/ir.kormaloo.mostahabatjame.DetailActivity}: android.database.sqlite.SQLiteException: near "table": syntax error (code 1): , while compiling: select * from table where id='1'

کد ها رو هم اینجوری قرار دادم:

MainActivity:

lv1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent=new Intent(MainActivity.this,DetailActivity.class);
intent.putExtra("position",position+1);
startActivity(intent);
}
});
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
int position = bundle.getInt("position");
MyDatabase db = new MyDatabase(this);
String content = db.getString("select * from table where id='"+position+"'","content");
tvDesc.setText(content);
لینک ارسال
به اشتراک گذاری در سایت های دیگر

همه کدهای اون اکتیوی سرچت رو بذار داداش

یکم خودت سعی کن خوب من الان یه سرچ با دیتابیس ساختم بخاطر مشکلت کاملا هم کار میکنه :fekr:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

داداش من کد رو بهت دادم دیگه عوض کردن اسم جدول دیتابیس و ستون دیتابیس و اینا رو باید خودت انجام بدی عزیز من

وقتی کسی کدی بهت میده یکم آنالیزش کن ببین چی میگه چیا داره

من مشخصات دیتابیس شمارو که ندارم

String content = db.getString("select * from table where id='"+position+"'","content");

کد بالارو ببین

اونجا که نوشته table شما اسم جدولتو بنویس

اونجا هم که نوشته content اسم ستون دیتابیستو بنویس

لینک ارسال
به اشتراک گذاری در سایت های دیگر

همه کدهای اون اکتیوی سرچت رو بذار داداش

یکم خودت سعی کن خوب من الان یه سرچ با دیتابیس ساختم بخاطر مشکلت کاملا هم کار میکنه :fekr:

همه چی درسته انگار  :fekr:

public class SearchActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.search);
        FontsOverride.setDefaultFont(this, "MONOSPACE", "iransans.ttf");
        final MyDatabase db = new MyDatabase(SearchActivity.this);
        final EditText search = (EditText) findViewById(R.id.search);
        final ListView lv1 = (ListView) findViewById(R.id.search_list);
        final String searchT = search.getText().toString();
        search.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                ArrayAdapter adapter = new ArrayAdapter(SearchActivity.this, android.R.layout.simple_list_item_1,
                        db.getListOfRow("SELECT * FROM data where title  LIKE '%" + searchT + "%'","title"));
                lv1.setAdapter(adapter);
                lv1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                        Intent intent=new Intent(SearchActivity.this,DetailActivity.class);
                        intent.putExtra("position",position+1);
                        startActivity(intent);
                    }
                });
            }

            @Override
            public void afterTextChanged(Editable s) {
            }
        });

    }
}
لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...