Получение идентификатора строки динамического списка в Android для добавления в корзину
У меня есть динамический просмотр списка на моем клиентском приложении для Android, которые получают данные из удаленной базы данных MySQL. У меня есть контекстное меню, которое открывается по щелчку пользователя в любой строке списка. В этом меню есть опция "добавить в корзину". Я хочу добавить выбранный элемент строки в корзину, когда выбрана эта опция контекстного меню. Итак, как мне получить идентификатор строки для добавления этого элемента строки в корзину, как корзины? Позже мне нужно отобразить выбранный элемент строки в моем классе "Показать корзину".. Пожалуйста, помогите.. спасибо заранее. Я не нашел много статей, которые обсуждают это с реальным кодом. Мой класс отображения списка здесь:
public class MainMenu extends ListActivity {
Intent intent = getIntent();
InputStream is;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String result = "";
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://10.0.2.2/phpmyadmin/php.php");
HttpResponse response = null;
try {
response = httpclient.execute(httppost);
} catch (ClientProtocolException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
HttpEntity entity = response.getEntity();
try {
is = entity.getContent();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Log.e("log_tag", "connection success ");
BufferedReader reader = null;
try {
reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
result=sb.toString();
JSONArray jArray = null;
try {
jArray = new JSONArray(result);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int arrayLength=jArray.length();
String F_NAME[]=new String[arrayLength];
for(int i=0;i<arrayLength;i++){
JSONObject json_data = null;
try {
json_data = jArray.getJSONObject(i);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
F_NAME[i]=json_data.getString("F_NAME");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}}
setListAdapter(new ArrayAdapter<String>(this, R.layout.list,F_NAME));
ListView lv = getListView();
lv.setTextFilterEnabled(true); registerForContextMenu(lv);}
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.fltmenu, menu); menu.setHeaderTitle("Ask for");}
public boolean onContextItemSelected(MenuItem item) { //find out which menu item was pressed switch (item.getItemId()) {
case R.id.ToCart:
Dotocart();
return true;
default:
return false;}}private void Dotocart() {}
1 ответ
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
int menuItemIndex = item.getItemId();
int position = (info.position);
....
указатель menuItem возвращает выбранный пункт контекстного меню (добавить в диаграмму, ...), а в info.position - позицию списка, по которому щелкнули. (если у вас также есть список данных, которые заполнили представление списка, вы можете получить его по тому же индексу.