جستجو در لیست ویو

0 امتیاز
39 بازدید
سوال شده مهر 27, 1395 توسط armin  
با سلام و خسته نباشید من تو اکشن بار یه دکمه سرچ دارم وقتی روش کلیک میکنم میره تو اکتویتی سرچ اونجا من یه ادیت تکست گذاشتم زیرش یه لیست ویو یه ارایه استرینگ هم تعریف کردم که ایتم های لیست ویو رو تشکیل میدن بعد تمام ایتم های ارایه استرینگ یه اکتویتی هم هستن مثلا @string/abc @string/abcd @string/abcde = abc.class abcd.class abcde.class که من میخوام وقتی رو هر کدوم از ایتم های لیست ویو کلیک میکنه بره تو اکتویتی متناظر خودش این کارو با سوییچ کیس انجام میدم کار هم میکنه اما وقتی تایپ میکنم و عمل فیلتر انجام میگیره رو ایتم های لیست ویو دیگه اکتویتی که باز میکنه اکتویتی متناظرش نیس. چطوری میتونم اینکارو انجام بدم ؟ تشکر
این مطلب را به اشتراک بگذارید

1 پاسخ

+2 امتیاز
پاسخ داده شده مهر 27, 1395 توسط sajjadfcb  

سلام 

شما میتونید با این کد متن داخل هر آیتم رو بگیرید و بگید اگه برابر بود با این متن به اکتیویتی متناظرش بره

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {


        String text = ((TextView) view).getText().toString();

        if (text.equals("1")){
            Intent intent = new Intent(MainActivity.this, Activity1.class);
            startActivity(intent);
        }else if (text.equals("2")){
            Intent intent = new Intent(MainActivity.this, Activity2.class);
            startActivity(intent);
        }
        
    }
});

به جای 1و2 نام آیتم های آرایه خودتون رو بنویسید و برای آیتم های بعدی هم همینطور بررسی کنید و else if بزارید.

موفق باشید.

دارای دیدگاه مهر 27, 1395 توسط armin  

ممنون ولی متأسفانه جواب نداد تمامی ایف علز ها رو گذاشتم و به جای 1و2 هم متن های خودمو به شکل های مختلف گذاشتم مثلا "abc" "@string/abc" R.string.abc حتی "متن نمادین" رو هم امتحان کردم منظورم: متن نمادین اما باز هم کار نکرد این کل کد اکتیویتی سرچ: package com.shady.letsdoit; import android.content.Intent; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.text.Editable; import android.text.TextWatcher; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.ListView; import android.widget.TextView; public class Search extends AppCompatActivity { private ListView list_view; EditText search_box; ArrayAdapter listAdapter; String products[]; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.search); getSupportActionBar().setDisplayShowTitleEnabled(false); getSupportActionBar().setDisplayHomeAsUpEnabled(true); search_box = (EditText) findViewById(R.id.search_box); list_view = (ListView) findViewById(R.id.list_view); products = getResources().getStringArray(R.array.search); listAdapter = new ArrayAdapter(this, R.layout.list_item,R.id.subject_name, products); list_view.setAdapter(listAdapter); /** enabling Search filter **/ search_box.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { } @Override public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) { Search.this.listAdapter.getFilter().filter(cs); } @Override public void afterTextChanged(Editable editable) { } }); list_view.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { String item_text = ((TextView) view).getText().toString(); if (item_text.equals(R.string.Android_whats_android)){ Intent intent = new Intent(Search.this, Android_whats_android.class); startActivity(intent); }else if (item_text.equals(R.string.Android_perso_wallpaper)) { Intent intent = new Intent(Search.this, Android_perso_wallpaper.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); }else if (item_text.equals(R.string.Android_perso_ringtone)) { Intent intent = new Intent(Search.this, Android_perso_ringtone.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); }else if (item_text.equals(R.string.Android_perso_lockscreen)) { Intent intent = new Intent(Search.this, Android_perso_lockscreen.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); }else if (item_text.equals(R.string.Android_perso_langueg)) { Intent intent = new Intent(Search.this, Android_perso_langueg.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); }else if (item_text.equals(R.string.Android_perso_dualsim)) { Intent intent = new Intent(Search.this, Android_perso_dualsim.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); }else if (item_text.equals(R.string.Android_perso_datetime)) { Intent intent = new Intent(Search.this, Android_perso_datetime.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); }else if (item_text.equals(R.string.Android_perso_bluetooth)) { Intent intent = new Intent(Search.this, Android_perso_bluetooth.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); }else if (item_text.equals(R.string.Android_perso_appmanagre)) { Intent intent = new Intent(Search.this, Android_perso_appmanagre.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); }else if (item_text.equals(R.string.Android_perso_accounts)) { Intent intent = new Intent(Search.this, Android_perso_accounts.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); }else return; } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.actionbar,menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item){ switch (item.getItemId()) { case R.id.action_search: Intent search = new Intent(this, Search.class); search.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(search); return true; case R.id.action_home: Intent home = new Intent(this, MainActivity.class); home.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(home); return true; case R.id.action_fav: Intent favorite = new Intent(this, Favorits.class); favorite.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(favorite); return true; case R.id.action_phone: Intent phone = new Intent(this, phon.class); phone.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(phone); return true; case R.id.action_pc: Intent pc = new Intent(this, pc.class); pc.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(pc); return true; } return false; } }

دارای دیدگاه مهر 27, 1395 توسط armin  
*string*متن نمادین*string name = "abc"/*
دارای دیدگاه مهر 28, 1395 توسط sajjadfcb  

همه چیز درسته  فقط باید داخل پارانتز equals اینطوری بنویسید 

getResources().getString(R.string.Android_whats_android);

کلا به این صورت:

if (item_text.equals(getResources().getString(R.string.Android_whats_android))) {
    
}

 

دارای دیدگاه مهر 28, 1395 توسط armin  
ناموسا من خجالت کشیدم این اندروید استودیو نمیدونم چجوری روش میشه "متأسفانه برنامه متوقف شده است" میده!! مگه میشه!!! بازم کار نکرد. :-\ قسمت لیست ویو و نمایش ایتماش کار میکنه قسمت سرچ و فیلتر کردن ایتم ها بخوبی کار میکنه فقط قسمت باز کردن اکتویتی مشکل داره مثلا اومدم اون قسمت ایف علز رو به شکل کامنت درآوردم دیگه پیغام متأسفانه متوقف شده است نمیده بنظرم کاملا قطعه کدی که شما پیشنهاد دادین منطقیه عجیبه کار نمیکنه واقعا گیج شدم الان دو سه روز با این قسمتش درگیرم حتی تو stack overflow هم سوال پرسیدم
دارای دیدگاه مهر 28, 1395 توسط sajjadfcb  
لطفا پروژه رو آپلود کنید احتمالا یه جایی اشتباه می کنید
دارای دیدگاه مهر 28, 1395 توسط armin  
https://drive.google.com/file/d/0B5fupadoGlQwODdyenJuRDh3LTA/view?usp=docslist_api یخرده دیتاشو کم کردم که حجمش بیاد پایین تر واسه آپلود بعد اگه تو کد ها افزونه گی یا مسعله ای که بهینه گی اپلیکیشن رو اورده پایین بم بگین خیلی ممنون میشم منظورم از نظر ظاهری نیس کلا این اپ زیاد چیز جدیه نیس بیشتر دارم باش تجربه کسب میکنم و بیشتر یاد بگیرم بازم ممنون واسه وقتی که میزارین، تشکر!
دارای دیدگاه مهر 28, 1395 توسط sajjadfcb  

کد شما یه ایراد کوچیک داره اونم اینه که داخل فایل list_item باید فقط از تکست ویو استفاده کنید و لینیر لیوت رو پاک  کنید.یعنی فقط یدونه تکست ویو وجود داشته باشه.

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:textSize="16dp"
    android:textStyle="bold"
    android:id="@+id/subject_name"
     />

یا اینکه متد ArrayAdapter رو به این صورت بنویسید.

listAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, products);

یعنی به جای لایه خودتون از لایه خود آندروید استفاده کنید.

موفق باشید.

دارای دیدگاه مهر 28, 1395 توسط armin  
بسیار عالی! حل شد. هم روش شما جواب داد هم این روش : String item_text = ((TextView) view).findViewById(R.Id.subject_name)).getText().toString();
دارای دیدگاه مهر 28, 1395 توسط armin  
واقعا خیلی ممنونم از زمانی که میذارید در این رابطه حتی بهتر از stack overflow. #سایت_فوقالعاده #شماره_یک
دارای دیدگاه مهر 28, 1395 توسط sajjadfcb  
خواهش می کنم.

693 سوال

669 پاسخ

1,169 دیدگاه

294 کاربر

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


لطفا از Android Studio استفاده بفرمایید

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

ali.ashkaran@gmail
ما .....
  • سعی بر پاسخگویی به سوالات دیگران داریم.
  • به سوال و یا نظر دیگران احترام می گذاریم .
  • این وبسایت را به دیگران معرفی می کنیم.
  • همواره صمیمیت و ادب را رعایت می کنیم.
  • به سوالمان برچسب های مرتبط اضافه می کنیم.
  • در حین طرح سوال فرد خاصی را مخاطب قرار نمی دهیم .
...