ورود

View Full Version : امکان جستجو در xml پارس شده



hamidhtc
یک شنبه 12 مرداد 1393, 06:39 صبح
سلام.
دوستان چه جوری میشه تو یه xml پارس شده جستجو کرد؟
روش های زیادی رو امتحان کردم ولی هیچ کدوم جواب نمیده!!! :ناراحت::ناراحت:
توروخدا هرکی بلده کمک کنه:گریه::گریه::گریه:

این هم کدم هست: http://www.uplooder.net/cgi-bin/dl.cgi?key=1ba87722bd2e57b42b1bf4ff4faaa8e1

hamidhtc
دوشنبه 13 مرداد 1393, 07:11 صبح
تورو خدا جواب بدید دیگه :گریه::گریه::گریه::گریه:

SASAN_AH
دوشنبه 13 مرداد 1393, 09:17 صبح
يه سوال چرا از راه ساده تري استفاده نميكني؟

شما قصدتون چيه؟
چه كار ميخوايد انجام بدين؟؟

hamid_0341
دوشنبه 13 مرداد 1393, 10:21 صبح
از getElementsByTagName استفاده کن !
DocumentBuilder builder = factory.newDocumentBuilder();
StringReader sr = new StringReader(response);
InputSource is = new InputSource(sr);
Document XMLResponse = builder.parse(is);
NodeList elements = XMLResponse.getElementsByTagName("Melk");

hamidhtc
سه شنبه 14 مرداد 1393, 04:42 صبح
فقط میخوام امکان جستجو رو فراهم کنم .
اسم رو بگیره و لیست ویو رو با توجه به اسم فیلتر کنه.
البته یه روش بهتری هم هست که جستجو رو تو کل دیتا بیس انجام میده که بیشتر اون مدنظرم هست,
تو آندروید تازه کارم اگه میدونید لطفا راهنمایی کنید.

hamidhtc
سه شنبه 14 مرداد 1393, 04:43 صبح
يه سوال چرا از راه ساده تري استفاده نميكني؟

شما قصدتون چيه؟
چه كار ميخوايد انجام بدين؟؟
فقط میخوام امکان جستجو رو فراهم کنم .
اسم رو بگیره و لیست ویو رو با توجه به اسم فیلتر کنه.
البته یه روش بهتری هم هست که جستجو رو تو کل دیتا بیس انجام میده که بیشتر اون مدنظرم هست,
تو آندروید تازه کارم اگه میدونید لطفا راهنمایی کنید.

saket601
دوشنبه 27 مرداد 1393, 11:57 صبح
فقط میخوام امکان جستجو رو فراهم کنم .
اسم رو بگیره و لیست ویو رو با توجه به اسم فیلتر کنه.
البته یه روش بهتری هم هست که جستجو رو تو کل دیتا بیس انجام میده که بیشتر اون مدنظرم هست,
تو آندروید تازه کارم اگه میدونید لطفا راهنمایی کنید.

ببین باید ی کوری توو اداپتر مربوط ب پایگاه دادت بنویسی و اونو توو کلاس جستجو فراخوانیش کنی..

hamidhtc
سه شنبه 28 مرداد 1393, 05:58 صبح
با تغییر تو آداپتر مشکل برطرف شد.
کد دوتاکلاس رو به شکل زیر تغییر دادم:
Mainactivity



public class MainActivity2 extends Activity implements OnItemClickListener,
TextWatcher {

public static final String LOGTAG = "EXPLORECA";
public static final String USERNAME = "pref_username";
public static final String VIEWIMAGE = "pref_viewimages";
private static final int TOUR_DETAIL_ACTIVITY = 1001;
private SharedPreferences settings;
private OnSharedPreferenceChangeListener listener;
private List<Tour> tours;
boolean isMyTours;
ToursDataSource datasource;

private TourListAdapter2 mAdapter;
private ListView lviTours;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.main);

final EditText editText = (EditText) findViewById(R.id.editTextSearch);

lviTours = (ListView) findViewById(android.R.id.list);
lviTours.setOnItemClickListener(this);

editText.addTextChangedListener(this);
datasource = new ToursDataSource(this);
datasource.open();

settings = PreferenceManager.getDefaultSharedPreferences(this );

listener = new OnSharedPreferenceChangeListener() {

@Override
public void onSharedPreferenceChanged(
SharedPreferences sharedPreferences, String key) {
MainActivity.this.refreshDisplay();
}
};
settings.registerOnSharedPreferenceChangeListener( listener);

tours = datasource.findAll();
if (tours.size() == 0) {
createData();
tours = datasource.findAll();
}
isMyTours = false;
refreshDisplay();
}

public void refreshDisplay() {

boolean viewImages = settings.getBoolean(VIEWIMAGE, true);

if (viewImages) {
// ArrayAdapter<Tour> adapter = new TourListAdapter(this, tours);
// setListAdapter(adapter);
mAdapter = new TourListAdapter2(this, tours);
lviTours.setAdapter(mAdapter);
} else {

mAdapter = new TourListAdapter2(this, tours);
lviTours.setAdapter(mAdapter);
// ArrayAdapter<Tour> adapter = new ArrayAdapter<Tour>(this,
// android.R.layout.simple_list_item_1, tours);
// setListAdapter(adapter);
}

}

@Override
protected void onResume() {
super.onResume();
datasource.open();
}

@Override
protected void onPause() {
super.onPause();
datasource.close();
}

private void createData() {
ToursPullParser parser = new ToursPullParser();
List<Tour> tours = parser.parseXML(this);

for (Tour tour : tours) {
datasource.create(tour);
}
}

/*********** SEARCH ****************/
@Override
public void afterTextChanged(Editable arg0) {

}

@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {

}

@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
mAdapter.getFilter().filter(cs);

}

@Override
public void onItemClick(AdapterView<?> adapter, View view, int position,
long id) {
Tour tour = tours.get(position);
Intent intent = new Intent(this, TourDetailActivity.class);
intent.putExtra(".model.Tour", tour);
intent.putExtra("isMyTours", isMyTours);
startActivityForResult(intent, TOUR_DETAIL_ACTIVITY);

}

}




و هم چنین ListAdapter



private LayoutInflater mInflater;
List<Tour> mList;
List<Tour> mFilter;
List<Tour> tours;
private Context mContext;

public TourListAdapter2(Context context, List<Tour> tours) {
mContext = context;
mInflater = LayoutInflater.from(context);
mList = tours;
mFilter = tours;
}

@Override
public int getCount() {

return mFilter.size();
}

@Override
public Object getItem(int position) {
return mFilter.get(position);
}

@Override
public long getItemId(int position) {
return mFilter.get(position).getId();
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;

Tour tour = (Tour) getItem(position);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.listitem, null);
viewHolder = new ViewHolder();
viewHolder.tviName = (TextView) convertView
.findViewById(R.id.titleText);

viewHolder.iviImage = (ImageView) convertView
.findViewById(R.id.imageView1);

convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}

viewHolder.tviName.setText(tour.getTitle());

int imageResource = mContext.getResources().getIdentifier(
tour.getImage(), "drawable", mContext.getPackageName());
if (imageResource != 0) {
viewHolder.iviImage.setImageResource(imageResource );
}

return convertView;
}

class ViewHolder {
public TextView tviName;
public ImageView iviImage;
}

/*********** SEARCH **********/
@Override
public Filter getFilter() {

return new Filter() {

@SuppressWarnings("unchecked")
@Override
protected void publishResults(CharSequence constraint,
FilterResults results) {
mFilter = (List<Tour>) results.values;
notifyDataSetChanged();
}

@Override
protected FilterResults performFiltering(CharSequence charSequence) {

FilterResults results = new FilterResults();

if (charSequence == null || charSequence.length() == 0) {
results.values = mList;
results.count = mList.size();
} else {
ArrayList<Tour> filterResultsData = new ArrayList<Tour>();

for (Tour data : mList) {

if (data.getTitle().contains(charSequence)) {
filterResultsData.add(data);
}
}

results.values = filterResultsData;
results.count = filterResultsData.size();
}

return results;
}
};
}