ListView的id问题

时间:2011-07-06 18:37:30

标签: android android-listview

我的问题ListActivity

我有这个xml:

<LinearLayout>
    <ListView 
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
    />
</LinearLayout>

在里面我有这个:

<LinearLayout>
    <ImageView android:id="@+id/flechas"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
    />
    <TextView android:id="@+id/textoName"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
    />
    <TextView android:id="@+id/textoPrice"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
    />
    <Button android:id="@+id/boton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="BUY"
        android:layout_marginRight="0dip"
        android:onClick="buy"
    />
</LinearLayout>

我使用BaseAdapter来显示它,这是主文件:

public class Info  extends ListActivity{

static ArrayList<Quotes> objeto= null;
static final ArrayList<HashMap<String, String>> lista= new ArrayList<HashMap<String,String>>();
private ListView mainListView;
private InfoModel [] model;
private CustomAdapterInfo listAdapter;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mainListView= (ListView)findViewById(R.id.);
    setContentView(R.layout.info);


    objeto= new ArrayList<Quotes>();
    Bundle extras=getIntent().getExtras();
    objeto= extras.getParcelableArrayList("datos");

    if ((objeto != null) && (objeto.size() != 0)){
        model= new InfoModel[objeto.size()];
        for (int i=0;i< objeto.size(); i++) {
            model[i]= new InfoModel(0, objeto.get(i).getName(), objeto.get(i).getTrade());
        }
    }

    ArrayList<InfoModel> datos= new ArrayList<InfoModel>();
    datos.addAll(Arrays.asList(model));

    listAdapter= new CustomAdapterInfo(this, datos);
    mainListView.setAdapter(listAdapter);
}

但我的mainListView为空。它找不到R.id。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

android:id="@android:id/list"

我想这应该是你自己的ID。像这样:

android:id="@+id/main_list_view"

之后,您可以使用以下内容访问它:

mainListView= (ListView)findViewById(R.id.main_list_view);

答案 1 :(得分:1)

如果您关注this example

如果您的活动扩展了ListActivity,那么您的XML应该包含ListView

android:id="@android:id/list"

这是对的。但是,初始化ListView的方式不同:

ListView lv = getListView();

这样就可以了。

答案 2 :(得分:1)

<强> “@机器人:ID /列表” 意味着它是android包的一部分你不能使用R.id.list(试试这个android.R.id.list)作为你的包为ADT生成的R类调用它,而不是你可以得到ListView对象, as ListView lView = getListView() 在从XML(布局)中找到任何View对象之前,在顶部使用setContentView方法,否则将获得NullPointerException。