Android:BaseAdapter 不显示元素

标签 android listview baseadapter

无论如何,我正在努力制作的应用程序都有一个简单的列表和一个位于底部的按钮。我的问题是我的自定义 BaseAdapter 不显示元素。我知道,因为我的元素只是一个字符串,所以我可以使用 ArrayAdapter,但赋值需要它。代码:

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>

“楼下”按钮会打开一个对话框,将项目添加到我的列表中。它显然不起作用,但我认为它是 BaseAdapter (ListaOrase) 本身,因为 Intent 不会抛出异常。如果我硬编码的项目能出现(Bucuresti 和 Sibiu),我将不胜感激。

我做错了什么? 非常感谢你! :)

最佳答案

您的代码几乎完美的问题是在 getcount() 方法中返回 orase.size(),您返回 0,在 ListaOrase 类中添加未实现的方法。 你的 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;
    }

}

希望对你有帮助

关于Android:BaseAdapter 不显示元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8368373/

相关文章:

android - 如何从另一个不是 fragment 的类更新 fragment

java - 通过参数从自定义ArrayList中删除重复项

java - 如何将多个 ArrayList<Hashmap> 值组合到一个 ListView 中

C#:替换 ListView 中空白项的文本?

android - 如何从扩展 BaseAdapter 的类启动 Activity?

android - 如何从 Google Glass 中的卡片开始 Intent

java - Android Studio - 两个相同(相同源代码)的应用程序 - 一个可以工作,第二个不能 - 应用程序启动后关闭

jquery - 动态添加列表项到 j-Query Mobile ListView

android - 在 OnClickListener 中刷新 Android ListView 数据

java - 尝试设置自定义 BaseAdapter 时出现错误