У меня есть проблема, которую немного сложно объяснить. Я строю приложение для Android для планирования поездки. У меня есть основной вид деятельности, который содержит элемент карты и некоторые другие кнопки и класс AsyncTask, где осуществляется связь с сервером, и путь отображается на карте. Я пытаюсь заставить его работать в автономном режиме, сохраняя ответ от сервера в базе данных sqllite.
У меня есть действие под названием MainActivity. Там у меня есть метод для пунктов меню
public boolean onOptionsItemSelected(final MenuItem pItem) {
switch (pItem.getItemId()) {
case R.id.recent_trips:
startActivity(new Intent(this, recentTripsActivity.class));
break;
default:
break;
}
return false;
}
}
Вот текущий метод вызова класса AsyncTask
btnPlanTrip.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
tripReq = new TripRequest(MainActivity.this,activityHandler,db);
tripReq.execute(request);
}
});
}
Когда я нажимаю на элемент Recent_trips в меню, открывается недавняя функция Trips. По сути, в этом классе я извлекаю некоторые данные из базы данных mysqllite и представляю их в listView через адаптер. Там у меня есть метод view.setOnClickListener, в котором при нажатии на элемент списка я принимаю определенное значение (res = listItem.getofflineResult ();). Я хотел бы использовать это значение в основной активности (подробнее см. Ниже).
Вот код.
public class recentTripsActivity extends Activity implements Serializable {
private ImageButton stopSearch;
private AutoCompleteTextView searchField;
SQLiteDatabase db;
OfflineTripRequest tripReq;
String res;
//db = openOrCreateDatabase("AndroidDatabase.db", SQLiteDatabase.CREATE_IF_NECESSARY, null);
private ListView listview;
private ArrayList mListItem;
ItemBO listItem;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.recent_trips);
//open database connection
db = openOrCreateDatabase("AndroidDatabase.db", SQLiteDatabase.CREATE_IF_NECESSARY, null);
int i=0;
String [] str={"id","description","offlineResult"};
listview = (ListView) findViewById(R.id.lview_trips);
mListItem = new ArrayList<ItemBO>();
Cursor cursor = db.query("tbl_offlinePathResult",str, null, null, null, null, null);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
i++;
ItemBO listItem = new ItemBO(i,cursor.getString(1),cursor.getString(2));
mListItem.add(listItem);
cursor.moveToNext();
if(i==10){
break;
}
}
// Make sure to close the cursor
cursor.close();
i++;
listview.setAdapter(new ListAdapter(recentTripsActivity.this, R.id.lview_trips,mListItem));
db.close();
}
//***ListAdapter***
class ListAdapter extends ArrayAdapter { //--CloneChangeRequired
private ArrayList mList; //--CloneChangeRequired
private Context mContext;
@SuppressWarnings("unchecked")
public ListAdapter(Context context, int textViewResourceId,
ArrayList list) { //--CloneChangeRequired
super(context, textViewResourceId, list);
this.mList = list;
this.mContext = context;
}
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
try {
if (view == null) {
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = vi.inflate(R.layout.list_item_saved_paths, null); //--CloneChangeRequired(list_item)
}
final ItemBO listItem = (ItemBO) mList.get(position); //--CloneChangeRequired
if (listItem != null) {
// setting list_item views
((TextView) view.findViewById(R.id.tv_name))
.setText(listItem.getDescription());
view.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) { //--clickOnListItem
res=listItem.getofflineResult();
}
});
}
} catch (Exception e) {
Log.i(recentTripsActivity.ListAdapter.class.toString(), e.getMessage());
}
return view;
}
}
}
Я хотел бы передать упомянутые выше данные (res = listItem.getofflineResult () в MainActivity. После этого я хотел бы вызвать класс AsyncTask и передать эти данные этому классу. Как можно Я делаю все это, нажимая на listItem? Как я уже говорил, карта находится в MainActivity, но щелчок будет происходить из другого действия.
Я надеюсь, что я достаточно ясно выразился, если у вас есть какие-либо вопросы, пожалуйста, спросите меня