Вопрос

Приложение, которое я изо всех сил пытаюсь сделать, имеет простой список и кнопку, представленную внизу, несмотря ни на что. Моя проблема в том, что мой пользовательский басейптер не показывает элементы. Я знаю, что, поскольку мои элементы - это всего лишь строка, я мог бы использовать арадирующий, но назначение требует этого. Код:

class ListaOrase extends BaseAdapter{
    private Activity context;
    ArrayList<String> orase;

    public ListaOrase(Activity context){
        this.context=context;
        orase=new ArrayList<String>();
    }
    public void add(String string){
        orase.add(string);
    }
public int getCount() {
        // TODO Auto-generated method stub
        return 0;
    }

    public Object getItem(int arg0) {
        // TODO Auto-generated method stub
        return null;
    }

    public long getItemId(int arg0) {
        // TODO Auto-generated method stub
        return 0;
    }


    public View getView (int position, View convertView, ViewGroup list)  {
        View element;
        if (convertView == null)
        {
         LayoutInflater inflater = context.getLayoutInflater();
         element = inflater.inflate(R.layout.lista, null);
        }
        else element = convertView;
        TextView elementLista=(TextView)element.findViewById(R.id.elementLista);    
        elementLista.setText(orase.get(position));
        return element;
    }

}
public class WeatherAppActivity extends ListActivity {

    Button buton;
    ListaOrase lista;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        lista=new ListaOrase(this);
        buton=(Button)findViewById(R.id.buton);
        setListAdapter(lista);

        lista.add("Bucuresti");
        lista.add("Sibiu");

    }
}

Мои файлы XML идут так:

main.xml -- for the Activity
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
     >



<ListView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@android:id/list"
    android:layout_alignParentTop="true"/>

<RelativeLayout 
    android:id="@+id/relative"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true">
<Button
        android:id="@+id/buton"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:onClick="add"
        android:text="Add"
        android:layout_gravity=""
        /> 
        </RelativeLayout>

</RelativeLayout>
lista.xml -- for the list
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
<TextView 
        android:id="@+id/elementLista"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />


</LinearLayout>

Кнопка «внизу» открывает диалог, который добавляет элементы в мой список. Очевидно, это не работает, но я думаю, что это сам базовый (Listaorase), поскольку намерения не бросают никаких исключений. Я был бы благодарен, если бы появились предметы, которые мне жестко кодировали (Bucuresti и Sibiu).

Что я делаю не так? Большое спасибо! :)

Это было полезно?

Решение

Ваш код почти идеальной проблемой является return orase.size () В методе getCount () вы возвращаете 0, добавьте невыполненные методы в классе Listaorase. Ваша спискаоараза должна быть такой:

class ListaOrase extends BaseAdapter{
    private Activity context;
    ArrayList<String> orase;

    public ListaOrase(Activity context){
        this.context=context;
        orase=new ArrayList<String>();
    }
    public void add(String string){
        orase.add(string);
    }

    public View getView (int position, View convertView, ViewGroup list)  {
        View element;
        if (convertView == null)
        {
         LayoutInflater inflater = context.getLayoutInflater();
         element = inflater.inflate(R.layout.lista, null);
        }
        else element = convertView;
        TextView elementLista=(TextView)element.findViewById(R.id.elementLista);    
        elementLista.setText(orase.get(position));
        Log.e("",orase.get(position));
        return element;
    }
    public int getCount() {
        // TODO Auto-generated method stub
        return orase.size();
    }
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return null;
    }
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

}

надеюсь это поможет

Другие советы

getCount Метод действительно возвращался 0, так что сразу же getView() не вызывали. Когда я переоделся на:

getcount() {  
    return arrayObject.Size();
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top