PDA

View Full Version : مشکل با ارسال مقدار صحیح به اکتیویتی بعدی در جستجو



parniaznet
یک شنبه 03 اسفند 1393, 15:16 عصر
سلام
من از کد های زیر برای قسمت جستجو استفاده می کنم :


package com.example.finaltest;

import java.util.ArrayList;
import java.util.HashMap;

import android.support.v7.app.ActionBarActivity;
import android.text.Editable;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.text.TextWatcher;
import android.view.View;

public class Search extends ActionBarActivity {

// List view
private ListView lv;

// Listview Adapter
ArrayAdapter<String> adapter;

// Search EditText
EditText inputSearch;


// ArrayList for Listview
ArrayList<HashMap<String, String>> productList;

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

// Listview Data
String products[] = getResources().getStringArray(R.array.search);

lv = (ListView) findViewById(R.id.list_view);
inputSearch = (EditText) findViewById(R.id.inputSearch);

// Adding items to listview
adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.subject_name, products);
lv.setAdapter(adapter);

/**
* Enabling Search Filter
* */
inputSearch.addTextChangedListener(new TextWatcher() {

@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
// When user changed the Text
Search.this.adapter.getFilter().filter(cs);
}

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

}

@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}
});

// after click
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

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

final String item = lv.getItemAtPosition(position).toString();
int total_number = 25;
for(int x = 1; x < total_number+1; x = x+1) {
String SubjectName = "subject_" + String.valueOf(x);
int resID = getResources().getIdentifier(SubjectName, "string", getPackageName());
String subject = getResources().getString(resID);

if(item.equals(subject)) {
String StringClass = "com.example.finaltest.Subject_" + String.valueOf(x);
Class<?> c = null;
if(StringClass != null) {
try {
c = Class.forName(StringClass);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Intent i = new Intent(getApplicationContext(), Show_Subjects.class);
String Subject_number = String.valueOf(position+1);
i.putExtra("subject_number", Subject_number);
startActivity(i);
}
}

}

});
}

@Override
public void onResume() {
super.onResume();
adapter.notifyDataSetChanged();
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.search, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}

برنامه من برای نمایش محتوا ها کلا یه اکتیویتی داره و بر اساس مقدار i ارسالی به اکتیویتی بعدی محتوا رو میسازه. مشکلی که من دارم اینه که تو فرم جستجو وقتی کاربر چیزی رو جستجو می کنه جایگاه اون عنوان تغییر می کنه و وقتی روش کلیک میکنی که بری اکتیویتی بعدی ، محتوای اشتباهی رو نمایش میده
چه تغییری باید در کد ها بدم تا با تغییر جایگاه عناوین همچنان مقدار اولیه صحیح رو به اکتیویتی بعدی ارسال کنه؟

parniaznet
یک شنبه 03 اسفند 1393, 19:13 عصر
کسی نیست کمک کنه؟

parniaznet
دوشنبه 04 اسفند 1393, 12:37 عصر
یعنی هیچ کس بلد نیست؟