2015-07-29 3 views
0

У меня есть действие, которое содержит кнопку отправки и несколько списков списка, которые я заполняю строковым массивом, этот массив существует как на английском, так и на французском.Как сохранить идентификатор выбора из списка view

strings.xml

<string-array name="trucks"> 
     <item name="truck1">Mini-van</item> 
     <item name="truck2">Pick-up</item> 
     <item name="truck3">4 x 4</item> 
    </string-array> 

strings_fr.xml

<string-array name="trucks"> 
     <item name="truck1">Mini-van french</item> 
     <item name="truck2">Pick-up french</item> 
     <item name="truck3">4 x 4 french</item> 
    </string-array> 

После того как пользователь выбирает, какой-либо вещи он/она хочет, чтобы они попали в кнопку, чтобы сохранить выбранные параметры (локально в массив). Я могу получить строковое содержимое выбранных элементов, но если бы я их сохранил, это сохранит языковые значения. мне нужно имя или какой-то идентификатор (truck1, truck2) для сохранения, чтобы при следующем загрузке списка я мог прагматично проверять сохраненные элементы списка независимо от языка, а также отправлять идентификаторы транспортного средства на сервер когда приходит время для постоянного сохранения данных.

Ниже то, что я до сих пор ..

activity_truck_picker.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 

<Button 
    android:id="@+id/btn_truck_done" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    style="@style/themedButton" 
    android:layout_alignParentBottom="true" 
    android:text="Add Truck(s)" /> 

<ListView 
    android:id="@+id/lst_trucks" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_above="@id/btn_truck_done" 
    android:layout_alignParentTop="true" 
    /> 

</RelativeLayout> 

TruckPickerActivity.java

import android.app.Activity; 
import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.util.SparseBooleanArray; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ListView; 

import java.util.ArrayList; 


public class TruckPickerActivity extends Activity implements 
     View.OnClickListener { 

    private static final String TAG = "Presite"; 

    Button button; 
    ListView listView; 
    ArrayAdapter<String> adapter; 

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

     listView = (ListView) findViewById(R.id.lst_trucks); 
     button = (Button) findViewById(R.id.btn_truck_done); 

     String[] trucks = getResources().getStringArray(R.array.trucks); 
     adapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_multiple_choice, trucks); 
     listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
     listView.setAdapter(adapter); 

     button.setOnClickListener(this); 
    } 

    public void onClick(View v) { 
     SparseBooleanArray checked = listView.getCheckedItemPositions(); 
     ArrayList<String> selectedItems = new ArrayList<String>(); 
     for (int i = 0; i < checked.size(); i++) { 
      int position = checked.keyAt(i); 
      if (checked.valueAt(i)) 
       selectedItems.add(adapter.getItem(position)); 
     } 

     String[] outputStrArr = new String[selectedItems.size()]; 

     for (int i = 0; i < selectedItems.size(); i++) { 
      outputStrArr[i] = selectedItems.get(i); 
      Log.i(TAG, "Truck Selected: " + selectedItems.get(i)); 

      String itemName = ...; // Some how look up name of string in array for storing in database 

     } 
    } 
} 

Я не могу понять способ, чтобы получить имена/идентификатор выбранные параметры для сохранения. Любая помощь будет оценена по достоинству.

ответ

0

можно добавить onItemClickListener к вашему ListView, где параметр long id является идентификатор элемента, который был щелкнул:

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

     //Do something with id parameter 

    } 
}); 

Если я вас правильно понял, вы хотели бы получить атрибут name вашего массива строк, объявленного в xml. Я бы создал 2-й массив, содержащий имя вашего 1-го массива, и выберем имена с использованием параметра id или position из onItemClickListener()

+0

Кажется, глупо иметь другой массив, чтобы сделать что-то подобное, но он работает, спасибо , – Justin

Смежные вопросы