2012-05-28 6 views
1

Я хотел вернуть выбранное значение из списка, я могу сделать это, если я использую список по умолчанию, но теперь я настраиваю listview, получаю изображение, рейтинг и т. Д. как я могу вернуть значение названия в тосте после того, как пользователь выбрал? Ниже мой код:получить строку из массива

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.appslist); 

     list=(ListView)findViewById(R.id.lvApps);   


     SoapObject Request = new SoapObject (NAMESPACE, METHOD_NAME); 
    SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 

     soapEnvelope.dotNet = true; 
     soapEnvelope.setOutputSoapObject(Request); 

     AndroidHttpTransport aht = new AndroidHttpTransport(URL); 

     try 
     { 
      aht.call(SOAP_ACTION, soapEnvelope); 
      SoapObject resultString = (SoapObject) soapEnvelope.getResponse();   

      String[] strTitle = new String[resultString.getPropertyCount()]; 
      String[] strDeveloper = new String[resultString.getPropertyCount()]; 
      String[] strRating = new String[resultString.getPropertyCount()]; 
      String[] strLogo = new String[resultString.getPropertyCount()];   

      for(int i =0; i<resultString.getPropertyCount(); i++) 
      { 
       SoapObject array = (SoapObject) resultString .getProperty(i); 
       strTitle[i] = array.getProperty(1).toString(); //get title 
       strDeveloper[i] = array.getProperty(3).toString(); //get developer 
       strRating[i] = array.getProperty(4).toString(); //get rating 
       strLogo[i] = array.getProperty(5).toString(); //get photo    
      } 
      adapter=new AppsListAdapter(this, strTitle, strDeveloper, strRating, strLogo); 
      list.setAdapter(adapter); 

      list.setOnItemClickListener(new OnItemClickListener(){ 
       @Override 
       public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
        Object GetLabel = list.getItemAtPosition(arg2); 
          //Toast here 
        Toast.makeText(getApplicationContext(), GetLabel.toString(), Toast.LENGTH_SHORT).show();       

      }); 
     } 

     catch(Exception e) 
     { 

     } 
    } 
} 
+0

вы используете шаблон проектирования '' Holder' в методе getView' в файле ' Adapter'? – Sajmon

ответ

1

Вы должны создать модель (боб) всех данных в одном пункте означает обернуть данные в объекты и создать массив, что модели и отправить этот массив адаптер ..... .....

Но сейчас есть несколько способов acive вам задачу:

1- у вас есть положение выбранного элемента, который может быть использован в качестве индекса в strTitle, чтобы получить конкретное название.

Строка title = strTitle [позиция]; ///, если думаю, может установить нуль и длину, если сделать это безопасно

2 у вас есть представление списка в обратном вызове public void onItemClick (AdapterView arg0, View arg1, int arg2, long arg3) из этого просмотр с помощью findViewbyid вы можете получить свое текстовое изображение с заголовком

Строка s = (String) ((TextView) view.findViewById (R.id.title)). getText(); // просмотр выбрана строка вид

или

TextView TXT = (TextView) arg0.getChildAt (позиционно-lv.firstVisiblePosition()) findViewById (R.id.mylistviewtextview). // arg0 является родительским представлением Строковое ключевое слово = txt.getText(). toString();

3-

+0

В настоящее время, если я нажму listview, он вернет массив, начните с 0 для элемента номер 1, 1 для элемента номер 2 .... и т. Д. Я хотел изменить его на значение моего названия – melvintcs

+1

Простейшим способом является использование этого названия: String title = strTitle [arg2]; ... –

+0

^решён! я к глупому никогда не думал об этом .. спасибо! – melvintcs

1

Попробуйте

lv.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> arg0, View v, int position, 
        long arg3) { 
       // TODO Auto-generated method stub 
       HashMap<String, String> o = (HashMap<String, String>) mylist 
         .get(position); 
       Log.v("o", o + "n"); 
       String d = o.get("the string value you want to retrieve"); 
       Log.v("Tapped ", d); 

      } 
     }); 

, где "лев" ваш ListView и MyList ваш ArrayList

+0

У меня проблема с .get (position); – melvintcs

+0

что бы это было? –

+0

спасибо брату, я его решил :) – melvintcs