2010-04-22 2 views
19

У меня есть веб-сервис, который возвращает супер простой список объектовЕсть супер простой пример List/ListAdapter там для андроид

MyObject [] = данные webServiceCall();

MyObject имеет 1 поле я хочу, чтобы отобразить, "Name" (т.е. data[0].Name)

Как я превратить это в деятельности, которая перечисляет только имя этих объектов в прокруткой listActivity на Android. Я получаю очень путать с курсорами, и я не уверен, что если мне нужно курсоры и я "не уверен, какой тип адаптера для реализации (BaseAdapter, SimpleAdapter и т.д.)

Так что я думаю, что я ищу три вещи,

активность, адаптер и layout.xml

Просто пытаюсь понять этот андроид вещи из, определенно нуб здесь

ответ

43

так я думаю, что я понял это с небольшим количеством вдохновения от ответа RobGThai, я хочу разместить код для кого-либо еще, чтобы увидеть, я предполагаю, что я на самом деле не использовать пользовательский адаптер

Это супер простой пример, который заставил меня начать, поэтому, как только у меня было это, я убедился, что у моего «MyObject» был метод toString(), чтобы он отображался правильно в списке, и я передал массив MyObject [] в конструктор «new ArrayAdapter» вместо из ListItems

FooList.java

import android.app.ListActivity; 
import android.os.Bundle; 
import android.widget.ArrayAdapter; 

public class FooList extends ListActivity { 
    String[] listItems = {"item 1", "item 2 ", "list", "android", "item 3", "foobar", "bar", }; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.temp); 
     setListAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, listItems)); 
    } 

} 

расположение XML-я использовал (temp.xml)

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <ListView android:id="@android:id/list" android:layout_width="fill_parent" 
     android:layout_height="wrap_content" /> 
    <TextView android:id="@android:id/empty" android:layout_width="wrap_content" 
     android:layout_height="wrap_content" android:text="Empty set" /> 
</LinearLayout> 
+9

Я не уверен, что вам нужен этот 'temp.xml', поскольку вы используете встроенный элемент списка для своей деятельности. – Tarik

+1

Наконец-то запускается список просмотров! –

+1

Ницца, Большинство учебных пособий на это больше, чем нужно. – superluminary

9

сделать вашу активность распространяется ListActivity, а также.

Тогда это поможет вам начать работу.

Object[] sArray = {"This", "is", 3.5, true, 2, "for", "bla"}; 
ArrayAdapter adp = new ArrayAdapter(this, android.R.layout.simple_list_item_1, sArray); 
setListAdapter(adp); 

Вторые параметры могут быть изменены в соответствии с предпочтительным расположением. Дополнительную информацию см. В документе API.

1

Вы также можете прикрепить AlertDialog к ListView, когда пользователь нажимает на ListItem. Я в том числе рабочий код, в случае, если кто-то пытается то же самое,

final ListView v = getListView(); 
v.setOnItemClickListener(new OnItemClickListener() { 

public void onItemClick(final AdapterView<?> parentView, View view, int position, 
     long id) { 
    final String fileName = (String) parentView.getItemAtPosition(position); 
    new AlertDialog.Builder(parentView.getContext()).setTitle("Upload").setMessage("Upload " + fileName +"?") 
     .setPositiveButton("OK", new DialogInterface.OnClickListener() { 

      public void onClick(DialogInterface di, int arg1) { 
       //do something here... 
      } 
     }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 

      public void onClick(DialogInterface di, int arg1) { 
       di.dismiss();       
      } 
     }).show(); 
} 
}); 

Ключ в том, что вам необходимо передать контекст вашей вмещающих активность на диалоге. Я нашел это, когда getApplicationContext() не удалось со странным сообщением об ошибке.

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