ورود

View Full Version : چگونگی جستجو در این نوع لیست و تعیین آیتم های آن به عنوان علاقمندی ها



moralschool
شنبه 04 مرداد 1393, 15:24 عصر
برنامم یه لیست داره که با کلیک روی هر آیتم وارد یه اکتیویتی میشه یعنی اصلا دیتابیس و ... نداره
نام آیتم ها هم در خود همین اکتیویتی نوشتم یعنی از استرینگ استفاده نکردم ...
خیلی برای پیدا کردن راه حل و درست کردن این برنامه تلاش کردم و جستجو کردم به نتیجه نرسیدم هر چند متاسفانه بعضی از دوستانی که اطلاعاتشون در زمینه برنامه نویسی اندروید خیلی خوب هست زیاد حوصله جواب دادن به سوالات زیاد رو ندارند ولی امیدوارم حالا دوستان کمک کنند بتونم :
1- برای این لیست جستجو بزارم
2- همچنین یه لیست علاقمندی ها براش درست کنم که اگه کسی مثلا در اکتیویتی 4 روی دکمه ثبت در علاقمندی ها کلیک کرد ، اون صفحه اضافه بشه به لیست علاقمندی ها

خب کدهای اکتیویتی لیستم اینه :


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.ListView;



public class Activity1 extends Activity {

ListView list;
String[] web = {
"row1",
"row2",
"row3",
"row4",
"row5"

} ;
Integer[] imageId = {
R.drawable.pic1,
R.drawable.pic2,
R.drawable.pic3,
R.drawable.pic4,
R.drawable.pic5

};


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity1);



CustomList adapter = new
CustomList(Activity1.this, web, imageId);
list=(ListView)findViewById(R.id.list);
list.setAdapter(adapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

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


if (list.getItemAtPosition(position).equals("row1")){
Intent next = new Intent(Activity1.this, Activity2.class);
startActivity(next);
}

if (list.getItemAtPosition(position).equals("row2")){
Intent next = new Intent(Activity1.this, Activity2.class);
startActivity(next);
}

if (list.getItemAtPosition(position).equals( "row3")){
Intent next = new Intent(Activity1.this, Activity2.class);
startActivity(next);
}

if (list.getItemAtPosition(position).equals("row4")){
Intent next = new Intent(Activity1.this, Activity2.class);
startActivity(next);
}

if (list.getItemAtPosition(position).equals("row5")){
Intent next = new Intent(Activity1.this, Activity2.class);
startActivity(next);
}

}
});
}



اینا هم کد های کلاس CustomList هستند :


import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class CustomList extends ArrayAdapter<String>{

private final Activity context;
private final String[] web;
private final Integer[] imageId;
public CustomList(Activity context,
String[] web, Integer[] imageId) {
super(context, R.layout.list_single, web);
this.context = context;
this.web = web;
this.imageId = imageId;

}
@Override
public View getView(int position, View view, ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View rowView= inflater.inflate(R.layout.list_single, null, true);
TextView txtTitle = (TextView) rowView.findViewById(R.id.textView1);

ImageView imageView = (ImageView) rowView.findViewById(R.id.imageView1);
txtTitle.setText(web[position]);

imageView.setImageResource(imageId[position]);
return rowView;
}
}

برای کسانی که برنامه نویسی رو خوب بلدن ممکنه 5 دقیقه طول بکشه راه حلشو پیدا کنن ولی برای ما خیلــــــــــــــــــــــ ـــــــــــــــــــــــــ ـی

moralschool
سه شنبه 07 مرداد 1393, 19:00 عصر
اقا یکی لطفا کمک کنه
کارم خیلی گیره اینه
اینجا هر کس چیزی می پرسه باید التماس کنه :افسرده:
خب یکی جواب بده

narges_g
چهارشنبه 08 مرداد 1393, 12:03 عصر
؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

akbar8298
چهارشنبه 08 مرداد 1393, 23:15 عصر
والا اینجوری که شما نوشتید خیلی مشکل میشه توضیح داد ولی به طور مختصر:

اگر تعداد آیتم های لست ویو زیاد هست بهتره از دیتابیس استفاده کنید. وگر نه
1- برای افزودن به لیست علاقه مندی ها از sharedpreferences استفاده کنید.
2- برای اضافه نموده امکان جستجو از اینترفیس Filterable توی arrayadapter خودتون استفاده کنید.

moralschool
پنج شنبه 09 مرداد 1393, 00:59 صبح
ممنون که جواب دادید
اما اگه بلد بودم که استفاده میکردم ! لیست من مثلا همیناست که در بالا نوشتم حالا شما کمک کنید برای درست کردنش

SASAN_AH
پنج شنبه 09 مرداد 1393, 09:15 صبح
شما يك edit بزاريد بالاي ليست ويو بعد براش اينو تعريف كنيد كه :


ArrayAdapter<String> adapter;

براي edit همراه فيلتر


edit.addTextChangedListener(new TextWatcher() {

@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub

}

@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub

}

@Override
public void afterTextChanged(Editable arg0) {

Activity.this.adapter.getFilter().filter(arg0);
}
});

براي مقدار دهي ليست هم كد ها مشكلي نداره
اينطوره كه اگه row1 جستجو بشه باكليك روش به ادرس ميره

moralschool
جمعه 10 مرداد 1393, 10:26 صبح
ممنون دوست عزیز
من اینو امتحان کردم روی adapter ایراد میگیره و خطا میده
چجوری حلش کنم

SASAN_AH
جمعه 10 مرداد 1393, 12:35 عصر
چه ايرادي ميگيره؟
عكس بزاريد از ارور؟

moralschool
جمعه 10 مرداد 1393, 13:36 عصر
چون در کدهای خود از adapter استفاده کردم میگفت adapter تکراری هست منم تغییرش دادم به adapter2
ولی بازم این خطای داخل عکس رو نشون میده
عکس (http://s5.picofile.com/file/8132929168/1111.jpg)
ممنون میشم بررسی کنید و بگید باید چیکار کنم
و کد دقیقا کجای کدی که در بالا گفتم باید باشه

moralschool
جمعه 10 مرداد 1393, 22:54 عصر
کسی هست بگه این مشکل از چیه ؟
لطفا برای قرار دادن قسمت جستجو برای این لیست کمک کنید

SASAN_AH
جمعه 10 مرداد 1393, 23:27 عصر
كدي كه دادم اداپتور براي اين بود كه بدوني اينطوري بايد باشه
پس اگه مثل كد داشتي نياز نيست دوبار بنويسي و اسمش رو تغيير بدي همون كد خودت باشه
باقي كد رو بزار

moralschool
شنبه 11 مرداد 1393, 00:29 صبح
این دفعه به getFilter ایراد میگیره !
کلا فکر نمیکنم به این شکل بشه فیلتر کرد که بشه وقتی روی هر کدوم هم کلیک کرد وارد اون اکتیویتی شد :افسرده:

SASAN_AH
شنبه 11 مرداد 1393, 08:41 صبح
شما سورس تون رو برا خصوصي بزاريد تا براتون مشكل رو حل كنم

moralschool
شنبه 11 مرداد 1393, 13:51 عصر
گفتم برای همه قابل استفاده باشه بصورت خیلی ساده سورسم رو آماده کردم
اینه :
دانلود (http://s5.picofile.com/file/8133076134/Mylist.rar.html)

boy0361
چهارشنبه 06 آبان 1394, 15:44 عصر
سرچش کار نمیکنه برادر:/